簡體   English   中英

如何將值傳遞到onClientClick的aspx頁面中的javascript函數

[英]How to pass a value into a javascript function within an aspx page onClientClick

我想在回發之前檢查文本框值。 我將onClientClick值設置為我的函數,但我不知道如何傳遞數據進行檢查,在這種情況下我想檢查txt1輸入的文本。

<asp:textbox id="txt1" runat="server />

<asp:LinkButton ID="LinkButton1"
                runat="server"
                Text="Save" 
                onclick="Save"
                OnClientClick="javascript:check(WANT TO PUT TEXTBOX VALUE HERE);"
                />

我的javascript:

function check(txt) {
 var pattern = /^[0-9]{1,11}(,[0-9]{0,2})?$/;
 if (!pattern.test(txt)) {
    return false;
 }
 else {
    return true;
 }
}

問題是這個檢查函數是在txt1的keypress事件中使用的,所以我無法使用:

function check(){
    var txt=$('#txt1').val();
}

整個JS代碼:

$('#txt1').keypress(function (e) {
    var key = String.fromCharCode(e.which);
    var txt = $(this).val() + key;
    if (check(txt)) {
        // do sth
    } else {
        e.preventDefault();
        // do sth
    }
});

如何告訴OnclientCLick函數獲取txt1值?

謝謝。

像這樣的東西:

<asp:textbox id="txt1" runat="server />

<asp:LinkButton ID="LinkButton1"
                runat="server"
                Text="Save" 
                onclick="Save"
                OnClientClick="check(document.getElementById('<%=txt1.ClientID%>').value;)"
                />

編輯:
其他方法:

  1. 您可以在服務器端添加它: LinkButton1.OnClientClick="check(document.getElementById('" + txt1.ClientID + "').value;)" ;

  2. 如果你想留在aspx頁面,你必須在OnClientClick中添加一個javascript函數的名稱,並在腳本標記中實現javascript函數:

     <asp:LinkButton ID="LinkButton1" runat="server" Text="Save" OnClientClick="validate();" /> <script type="text/javascript"> function validate() { alert(document.getElementById('<%=txt1.ClientID%>').value); return false; } </script> 

你有幾種方法。

第一種方法:

function sayHello(obj){
   alert(obj.id + " says 'Hello!'");
};

<asp:Button runat="server" ID="btnApproach1" OnClientClick="sayHello(this)"
 Text="Say Hello" />

這會將Button控件(實際上只是一個<input元素)傳遞給函數,然后您可以隨意處理它。

第二種方法:

function checkValue(e) {

    //If it has a target, use it. Otherwise, use srcElement (for IE)
    var ctrl = e.target || e.srcElement;

    //Do whatever you need to with the text, no button necessary.

};

function bindEvent(ctrl, event, handler, propagates) {
    if (ctrl.addEventListener) {
        ctrl.addEventListener(event, handler, propagates);
    }
    else {
        ctrl.attachEvent("on" + event, handler);
    }
};

window.onload = function () {

var myCtrl = document.getElementById('<%=txtToValidate.ClientID%>');

bindEvent(myCtrl, "keydown", checkValue, false);

};

<asp:Button runat="server" ID="btnApproach2" Text="Say Hello" />

在這里,您將事件綁定到幕后的控件(最好),並從表示層(您的.aspx)中刪除該邏輯。

這兩種方法都可行,但我建議選擇第二種方法來分離問題。

您只需在字符串傳遞的兩端添加單引號以檢查函數,如下所示。

javascript:check('WANT TO PUT TEXTBOX VALUE HERE');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM