2011-12-19 118 views
0

我從一個文本框中獲取值並將其放入另一個文本框中。正在傳輸的值是一個問題的持續時間,並且兩個文本框都使用jQuery timepicker插件。現在這適用於第一個文本框,但它不適用於第二個文本框。我想在第二個文本框旁邊包含一個按鈕,以便用戶可以打開時間選擇器,以防用戶想要更改第二個文本框中的持續時間。我想把一個jQuery的功能在另一個功能

所以我想包括下面這timepicker功能:

$(document).ready(function() { 
    $(function() { 
     $('#questiondurationpickerRow').trenttimepicker({ 
      timeFormat: 'hh mm ss', 
      hourGrid: 4, 
      minuteGrid: 10, 
      secondGrid: 10, 
      showOn: 'button', 
      buttonImage: "Images/clock.gif", 
      buttonImageOnly: true 
     }); 
    }); 
}); 

到下面的InsertQuestion(形式)功能:

var qnum = 1; 

function insertQuestion(form) { 
    var $tr = $("<tr></tr>"); 
    var $duration = $("<td class='duration'></td>"); 

    $('#questiondurationpicker').each(function() { 
     var $this = $(this); 
     var $durationText = 
      $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />") 
       .attr('name', $this.attr('name')) 
       .attr('value', $this.val()) 

     $duration.append($durationText); 
    }); 

    $tr.append($qid); 
    $tr.append($duration) 
    $('#qandatbl').append($tr); 

    form.numberOfQuestions.value = qnum; 

    ++qnum; 
    $("#questionNum").text(qnum); 
    form.questionText.value = ""; 
} 

什麼是該做的是顯示timepicker按鈕我在「#questiondurationpickerRow」文本框旁邊創建,以便用戶可以單擊該按鈕並打開時間選擇器以打開持續時間。

我試圖把「questiondurationpickerRow」timepicker函數放在insertQuestion(表單)函數中,但它不顯示按鈕。下面是我的嘗試:

var qnum = 1; 

function insertQuestion(form) { 
    $(document).ready(function() { 
     $(function() { 
      $('#questiondurationpickerRow').trenttimepicker({ 
       timeFormat: 'hh mm ss', 
       hourGrid: 4, 
       minuteGrid: 10, 
       secondGrid: 10, 
       showOn: 'button', 
       buttonImage: "Images/clock.gif", 
       buttonImageOnly: true 
      }); 
     }); 
    }); 

    var $tr = $("<tr></tr>"); 
    var $duration = $("<td class='duration'></td>"); 

    $('#questiondurationpicker').each(function() { 

     var $this = $(this); 
     var $durationText = 
     $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />") 
      .attr('name', $this.attr('name')) 
      .attr('value', $this.val()) 

     $duration.append($durationText); 
    }); 

    $tr.append($qid); 
    $tr.append($duration) 
    $('#qandatbl').append($tr); 

    form.numberOfQuestions.value = qnum; 

    ++qnum; 
    $("#questionNum").text(qnum); 
    form.questionText.value = ""; 
} 

我怎麼能包括「questiondurationpickerRow」 timepicker功能在insertQuestion()函數,以便它旁邊會顯示一個文本框中timepicker按鈕?

+1

我不明白了一個道理包裹準備文檔中準備一個文件:' $(document).ready(function(){$(function(){' – 2011-12-19 14:39:57

+0

'$(document).ready(function(){'和'$(function(){'是同樣的事情。 – 2011-12-19 15:00:27

回答

0

此:

function insertQuestion(form) { 
    $(document).ready(function() { 
     $(function() { 
      $('#questiondurationpickerRow').trenttimepicker({ 

所有你需要的是:

function insertQuestion(form) { 
    $('#questiondurationpickerRow').trenttimepicker({ 

我沒有看到一個定義

$tr.append($qid); 
的$ QID

一個很難去猜測什麼).trenttimepicker確實。

編輯:

綜觀:

$('#questiondurationpicker').each(function() { 
    var $this = $(this); 
    var $durationText = 
      $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />") 
      .attr('name', $this.attr('name')) 
      .attr('value', $this.val()) 
     $duration.append($durationText); 
}); 

這更有意義(並修正語法錯誤)

來做爲:

$this = $('#questiondurationpicker'); 
    var $durationText = $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />") 
     .attr('name', $this.attr('name')) 
     .attr('value', $this.val()); 
    $duration.append($durationText); 

重:缺少半冒號 只有一個元素可以存在給定的ID,所以不需要each()東西

最終返工:

var qnum = 1; 

function insertQuestion(form) { 
    var $tr = $("<tr></tr>"); 
    var $duration = $("<td class='duration'></td>"); 

    $this = $('#questiondurationpicker');//assume this exists 
    var $durationText = $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />").attr('name', $this.attr('name')).attr('value', $this.val());//was issing semi colon 
    $duration.append($durationText); 

    $tr.append($qid);//assume $qid exists and is an element 
    $tr.append($duration) $('#qandatbl').append($tr); 
    form.numberOfQuestions.value = qnum;//another assumption 
    ++qnum; 
    $("#questionNum").text(qnum);// assume this exists 
    form.questionText.value = "";//assume this exists 

    // This has to be after it gets inserted 
    $('#questiondurationpickerRow').trenttimepicker({ 
     timeFormat: 'hh mm ss', 
     hourGrid: 4, 
     minuteGrid: 10, 
     secondGrid: 10, 
     showOn: 'button', 
     buttonImage: "Images/clock.gif", 
     buttonImageOnly: true 
    }); 
} 

下面是使用jQuery UI日期選擇器一個SAMPE頁: http://jsfiddle.net/MarkSchultheiss/Mykd6/

+0

它確定我有一個定義爲$ qid,我只是沒有包括它在我的問題中,我會嘗試你在我的代碼中回答 – BruceyBandit 2011-12-19 15:12:20

+0

trenttimepicker是我稱之爲timepicker,因爲我使用了幾個不同的時間選擇器所以這區分時間選擇器,但我知道這個功能的作品,因爲它適用於其他文本框。然而,我試過你的答案,它仍然不顯示按鈕來顯示文本框旁邊的timepicker – BruceyBandit 2011-12-19 15:21:46

+0

我需要.each(function(),因爲有其他文本框我想包括在代碼中,但你已經修復問題,因爲你聲明timepicker函數必須在代碼的其餘部分之後才正確,因此你已經解決了這個問題。謝謝:) – BruceyBandit 2011-12-19 16:38:28