我想在回发之前检查文本框值。我将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的按键事件中使用的,所以我无法使用:
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值?
谢谢。
答案 0 :(得分:8)
类似的东西:
<asp:textbox id="txt1" runat="server />
<asp:LinkButton ID="LinkButton1"
runat="server"
Text="Save"
onclick="Save"
OnClientClick="check(document.getElementById('<%=txt1.ClientID%>').value;)"
/>
修改强>
其他方法:
您可以在服务器端添加它:LinkButton1.OnClientClick="check(document.getElementById('" + txt1.ClientID + "').value;)"
;
如果你想留在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>
答案 1 :(得分:2)
你有几种方法。
第一种方法:
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)中删除该逻辑。
这两种方法都有效,但我建议选择二来解决问题。
答案 2 :(得分:-2)
您只需在字符串传递的两端添加单引号以检查功能,如下所示。
javascript:check('WANT TO PUT TEXTBOX VALUE HERE');