2012-07-15 111 views
1

我有一個函數,如果用戶點擊一個按鈕,它會在文本框中顯示一個值,它會在'#btn'按鈕後執行另一個函數的觸發器點擊:代碼生效時它不應該是

function addwindow(numberAnswer, gridValues, btn) { 
    $('#mainNumberAnswerTxt').val(numberAnswer).data('data-ignore',true); 
    $('#btn'+gridValues).trigger('click');  
} 

現在我想要做的是:

  1. 如果用戶點擊「添加」按鈕,然後從塔「的答案編號」到顯示的號碼文本框或換句話說從addwindow()函數執行此操作:

    $('#mainNumberAnswerTxt').val(numberAnswer).data('data-ignore',true);

  2. 如果用戶點擊了#btn+gridValues按鈕,然後顯示其中當前正在接通或換句話說按鈕的數量的文本數執行該代碼:

    if ($('#mainNumberAnswerTxt').data('data-ignore') != true) { $('.answertxt', context).val(context.find('.answerBtnsOn').length > 0 ? context.find('.answerBtnsOn').length : 0); }

問題是,第1步工作正常,它顯示在用戶點擊「添加」按鈕後,在文本框中的「答案數」列顯示數字。

問題是第2步,它沒有顯示正確的數字,當用戶點擊#btn+gridValues按鈕後當前打開了多少個按鈕。它只是不改變文本框中的數字。

有誰知道爲什麼會發生這種情況,以及如何修復?

DEMO:

這裏是應用程序的一個demo。請按照以下步驟操作:

步驟1:在左側你會看到一個綠色的加號按鈕,點擊它並打開一個模式窗口。 步驟2:在模態窗口中有一個搜索欄,輸入「AAA」並提交搜索,你會看到一堆行出現。 步驟3:在最後一行中,您在「Number of Answer」列中看到它包含數字4,單擊該行內的「Add」按鈕,模式窗口將關閉。

您將看到文本框在文本框中顯示數字4,因爲這是在添加該行時「行數」列下行內的數字。

但下面的問題是:

第4步:如果你點擊「打開網格」鏈接,然後選擇按鈕3,你會看到下面的變化字母按鈕AC只用字母「B」開啓。

在文本框中它應該顯示數字1,因爲只打開了1個按鈕,但它不顯示此數字,這就是我遇到的問題。

如何解決這個問題?

+1

您確定在正確的元素上進行數據忽略檢查嗎?你能提供更多的HTML嗎? – 2012-07-15 10:36:50

+1

第二個代碼塊中似乎有語法錯誤。你有什麼錯誤嗎? – Inkbug 2012-07-15 10:38:53

+0

@Inkbug對不起,我粘貼錯誤的代碼,我粘貼的代碼之前,我排除了語法錯誤。我已經更新了現在不提供語法錯誤的代碼,但仍然如問題 – user1490145 2012-07-15 11:07:11

回答

2

問題來自於您將$('#mainNumberAnswerTxt')上的data-attribute設置爲false,但您正在檢查輸入(點擊中的this)。

一個解決辦法是,以做如下測試if ($('#mainNumberAnswerTxt').attr('data-ignore') != true)

編輯

要確保忽略過程只執行一次(當電網的模式後重新加載),你必須測試後改變什麼是塊內:

if ($('#mainNumberAnswerTxt').data('ignore') != true) { 
    $('.answertxt', context).val(context.find('.answerBtnsOn').length > 0 ? context.find('.answerBtnsOn').length : 0); 
} else { 
    /*reset the ignore flag*/ 
    $('#mainNumberAnswerTxt').data('ignore',false); 
} 

EDIT2

主要問題是您在設置後重新執行$('#mainNumberAnswerTxt').val(numberAnswer)。您試圖通過ignore屬性忽略它。

什麼,我會adivse,將每一次出現刪除該屬性並更改下列功能

function addwindow(questionText,textWeight,numberAnswer,gridValues,reply,btn) { 
    var answers = $.map(btn.split(''),function(chr){ return "#answer"+chr; }).join(', '); 
    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') { 
     var myNumbers = {}; 
     myNumbers["A-C"] = "3"; 
     myNumbers["A-D"] = "4"; 
     myNumbers["A-E"] = "5"; 
     myNumbers["A-F"] = "6"; 
     myNumbers["A-G"] = "7"; 
     gridValues = myNumbers[gridValues]; 
     $('#mainNumberAnswerTxt').show(); 
     $('#mainNumberAnswerTxt').val(numberAnswer).data('ignore',true); 
     $('#mainGridTxt').val(gridValues).parent().append($('.optionTypeTbl')); 
     $('#btn'+gridValues).trigger('click'); 
     $('.answers.answerBtnsOn').removeClass('answerBtnsOn').addClass('answerBtnsOff'); 
     $(answers).addClass("answerBtnsOn").siblings().addClass('answerBtnsOff'); 
    } 
    $.modal.close(); 
    return false; 
} 

到:

function addwindow(questionText,textWeight,numberAnswer,gridValues,reply,btn) { 
    var answers = $.map(btn.split(''),function(chr){ return "#answer"+chr; }).join(', '); 
    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') { 
     var myNumbers = {}; 
     myNumbers["A-C"] = "3"; 
     myNumbers["A-D"] = "4"; 
     myNumbers["A-E"] = "5"; 
     myNumbers["A-F"] = "6"; 
     myNumbers["A-G"] = "7"; 
     gridValues = myNumbers[gridValues]; 
     $('#mainNumberAnswerTxt').show(); 
     $('#mainGridTxt').val(gridValues).parent().append($('.optionTypeTbl')); 
     $('#btn'+gridValues).trigger('click'); 
     /* moved the following line below the click simulation, 
      hence its value will be changed regardless of what happened during the click simulation*/ 
     $('#mainNumberAnswerTxt').val(numberAnswer); 
     $('.answers.answerBtnsOn').removeClass('answerBtnsOn').addClass('answerBtnsOff'); 
     $(answers).addClass("answerBtnsOn").siblings().addClass('answerBtnsOff'); 
    } 
    $.modal.close(); 
    return false; 
} 

爲了修改視覺上的變化後的值發生。

+0

如果我這樣做,然後它顯示他編號在文本框形式的「答覆數量」列,但然後當將來如果我想要它要顯示打開了多少個按鈕,它不這樣做,因爲它忽略了第一個代碼,它沒有達到第二個代碼 – user1490145 2012-07-18 10:36:17

+0

查看編輯的答案 – 2012-07-18 11:59:25

+0

我將在一個小時內測試它,因爲我必須運行一個差事,但我將在大約一個小時內回覆給您:) – user1490145 2012-07-18 12:13:32

0

使用data而不是attr - attr取一個字符串,data取JavaScript對象。

+0

我試過數據方法,但仍然沒有運氣,它仍然在文本框中顯示不正確的數字,因爲第二塊代碼正在生效。我將更新的問題,向您展示應用程序和步驟,以便您可以看到發生了什麼 – user1490145 2012-07-15 11:21:01

相關問題