您可能希望将CheckSearch
函数更改为如下所示:
function CheckSearch(name, code, iMinSize) {
var textBox, comboBox; // use these variables
textBox = document.getElementById(name);
comboBox = document.getElementById(code);
if (textBox.value.length < iMinSize && comboBox.value === '') {
alert('You must enter ' + iMinSize + ' letters or more when searching.');
textBox.focus();
return false;
}
else {
return true;
}
}
您当前仅在标记上传递一个字符串,并且您的函数需要一个对象。
编辑:或者,您可以保留该功能并更改您的标记,如下所示:
编辑2:更改了字符串document.getElementById
<asp:Button ID="buttonSearch" runat="server" Text="Search" OnClick="buttonSearch_Click"
OnClientClick="return CheckSearch(document.getElementById('<%= textBoxSearch.ClientID %>'),document.getElementById('<%= comboCodes.ClientID %>'), 3);" />
这样,您将传递对组合和文本框的引用,而不仅仅是 id 字符串。
希望最后一次编辑:
我没有仔细研究它,但是当我运行该代码时,我注意到就像你的一样,有些字符没有被转义,所以它呈现如下:
document.getElementById('textBoxSearch')
(这个可以处理,但是我现在没有时间去做)
因此该函数将接收null
对象,因为它无法通过该参数找到它,所以我最终这样做了:
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="textBoxSearch" runat="server" />
<asp:DropDownList ID="comboCodes" runat="server" >
<asp:ListItem Text=""></asp:ListItem>
<asp:ListItem Value="1" Text="One"></asp:ListItem>
<asp:ListItem Value="2" Text="Two"></asp:ListItem>
<asp:ListItem Value="3" Text="Drei"></asp:ListItem>
<asp:ListItem Value="4" Text="Four"></asp:ListItem>
</asp:DropDownList>
<asp:Button ID="buttonSearch" runat="server" Text="Search" OnClick="buttonSearch_Click"
OnClientClick="return CheckSearch(3);" />
</div>
</form>
<script type="text/javascript">
function CheckSearch(iMinSize) {
var textBox, comboBox;
textBox = document.getElementById('<%= textBoxSearch.ClientID %>');
comboBox = document.getElementById('<%= comboCodes.ClientID %>');
if (textBox.value.length < iMinSize && comboBox.value === '') {
alert('You must enter ' + iMinSize + ' letters or more when searching.');
textBox.focus();
return false;
}
else {
return true;
}
}
</script>
</body>
请注意,这并不理想,因为您的函数不够通用,无法处理其他控件,因为我在函数本身中获取了控件的引用。话虽如此,我建议您按照 Mike Christensen 示例 (+1) 的方式做一些事情,因为您在调用时会引用控件并且不会遇到字符转义问题,但我还没有测试过他的代码寿。
希望这可以帮助