3

我正在尝试使用 preventDefault 以便在使用“帐号”作为输入值提交表单时不会发生任何事情。

对于我所做的所有阅读,我看不到问题所在。我怀疑我只是盯着它太久了,错过了一些非常明显的东西。帮我今天准时离开办公室!

这里的非工作代码示例:http: //jsfiddle.net/sX52r/

HTML

<form action="/" id="AccSearch" method="post">                            

<input type="text" name="AccountNumber" ID="AccountNumber" class="lookup_field" value="Account number" onfocus="if(this.value=='Account number'){this.value=''}" 
onblur="if(this.value==''){this.value='Account number'}">

<input type="image" id="AccSearchSubmit" src="/Images/search.png" onmousedown="this.src='/Images/search_down.png'" onmouseup="this.src='/Images/search.png'" onmouseout="this.src='/Images/search.png'" alt="Submit" />

</form>

js

$('#AccSearchSubmit').click(function (e) {
    if ($('#AccountNumber').val == 'Account number') {
        e.preventDefault();
        alert("BOING!");
    }
});
4

5 回答 5

6

val是一个函数,你应该调用它。

if ($('#AccountNumber').val() == 'Account number') {

工作 jsFiddle

建议:

  • 捕获表单的提交事件可能是一个更好的主意,因为在文本输入中按 Enter 也会提交表单。

  • 您应该使用placeholderHTML5 属性(所有现代浏览器都支持它),而不是这种“脆弱”的解决方案(使用所有丑陋、突兀的内联事件处理程序),并且对于旧浏览器,使用Mathias Bynens 的 jquery-placeholder 之类的插件。

于 2012-09-20T14:06:06.823 回答
4

使用表单的提交事件。使用 click() - 您将不得不手动处理 enter 按键。

$('#AccSearch').submit(function (e) {
    if ($('#AccountNumber').val() == 'Account number') {
        e.preventDefault();
        alert("BOING!");
    }
});

你也错过了 .val() 之后的括号

http://jsfiddle.net/sX52r/8/

于 2012-09-20T14:05:36.527 回答
1

val是 jQuery 对象的方法,而不是属性。改变这个:

if ($('#AccountNumber').val == 'Account number') {

对此:

if ($('#AccountNumber').val() == 'Account number') {
//                         ^^ invoke the method
于 2012-09-20T14:09:35.623 回答
0

$('#AccountNumber').val 是函数指针。要使用该值,请像这样调用函数:

$('#AccountNumber').val();
于 2012-09-20T14:09:13.933 回答
0

我只是想跟进这件事,因为我今天有一点空闲时间并设法改进了我的原始代码。

我发现在这种情况下使用 return false 实际上比 preventDefault 更合适。通过按 Enter 提交表单也存在问题,这取决于我正在使用的文本框的值。

无论如何,这是我的解决方案 - 结果也更轻了。

http://jsfiddle.net/sX52r/22/

$('#AccSearch').submit(function () {
if ($('#AccountNumber').val() == 'Account number' || $('#AccountNumber').val() == '') {
alert("BOING!");            
return false;
}});
于 2012-09-21T15:03:23.303 回答