2013-01-20 38 views
0

我的asp.net MVC視圖中有幾個文本框,當用戶點擊它們時會顯示一個彈出框。彈出窗口還有一個文本框,用戶在jquery彈出窗口中輸入一個值,然後單擊確定,所選值將顯示在單擊的文本框中。我在這個文本框上使用了textbox.change事件,但它並沒有被觸發,因爲事件只被觸發如果我手動單擊文本框。如何強制更改jquery事件,而無需用戶更改文本框中的文本?

$(document).ready(function() { 


      jQuery("#NumberCalledTo").click(function() { 
       displayAlertMessage($(this).val()); 
      }); 


$("#dial-prefix").dialog({ 
     autoOpen: false, 
     modal: true, 
     width: 470, 
     resizeable: true, 
     buttons: { 
      "OK": function() { 
       var selectedDialPrefixValue = $("#dialprefixPopup").val(); 
       var selectedPhoneValue = $("#PhoneNumber").val(); 

       // remove + and space from dialprefix selected on popup 
       selectedDialPrefixwithoutPlus = selectedDialPrefixValue.replace(selectedDialPrefixValue.substring(0, 1), " "); 
       selectedDialPrefixwithoutPlus = $.trim(selectedDialPrefixwithoutPlus); 

       // number must be 10 or 11 digits long 
       if (selectedDialPrefixwithoutPlus == "44" && selectedPhoneValue.substring(0, 1) == "0" && selectedPhoneValue.length < 11) { 
        //displayAlertMessage("Invalid number. Must must have 10 digits."); 
        $("#div-uk-error-message").dialog("open"); 
        return; 
       } 
       else if (selectedDialPrefixwithoutPlus == "44" && selectedPhoneValue.length < 10) { 
        //displayAlertMessage("Invalid number. Must must have 9 digits."); 
        $("#div-uk-error-message").dialog("open"); 
        return; 
       } 

       // remove 0 from phone number 
       if (selectedPhoneValue.substring(0, 1) == "0") { 
        selectedPhoneValue = selectedPhoneValue.replace(selectedPhoneValue.substring(0, 1), ""); 
       } 

       if (selectedPhoneValue != '') { 
        var selectedDialPrefix = $("#SelecteddialprefixId").val(); 
        var selectedPhone = $("#SelectedPhoneId").val(); 
        $("#" + selectedDialPrefix).val(selectedDialPrefixValue); 
        $("#" + selectedPhone).val(selectedPhoneValue);     
       } 
       $(this).dialog("close"); 
      }, 
      "Cancel": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 


}); 

$(「#dial-prefix」)。對話框在文本框中單擊打開。由於此彈出窗口在不同的頁面和不同的文本框中使用,因此我無法向OK按鈕功能添加任何代碼。

請提出一個解決方案,它

回答

15

我沒有看到變化的方法,因此很難破譯問題的元素,但如果你想觸發一個事件,你可以只是做...

$('element').trigger('change'); 

將觸發change event,如果任何handlers are bound to the event那麼他們會火。

+0

感謝您的回覆。我需要在哪裏致電此活動?在document.ready中?我不能改變,$(「#dial-prefix」)。對話框OK函數,因爲它是通用的。請建議。 – DotnetSparrow

+0

我試圖將上面的內容更改爲$('#NumberCalledTo')。trigger('change'); jQuery(「#NumberCalledTo」)。change(function(){ displayAlertMessage($(this).val()); });但它沒有工作 – DotnetSparrow

+0

@DotnetSparrow是它的錯字?在上面的代碼中,我看到一個'click'函數,但你只是給我發送了一個'change'函數。你真的有哪些?如果元素在頁面加載時不存在(ajax或其他),那麼你必須將事件綁定到一個靜態父元素,比如'$(document).on('change',' #NumberCalledTo',functoin(){displayAlertMessage($(this).val());});' – Ohgodwhy