jQuery preventDefault - 无法使这个工作

Ala*_*tis 3 javascript forms jquery placeholder

我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)

JS

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

kap*_*apa 6

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

if ($('#AccountNumber').val() == 'Account number') {
Run Code Online (Sandbox Code Playgroud)

工作的jsFiddle.

建议:

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

  • 您应该使用placeholderHTML5属性(所有现代浏览器都支持它)而不是旧的浏览器,而不是这个"脆弱"的解决方案(使用所有丑陋,突兀的内联事件处理程序),而使用像Mathias Bynens的jquery-placeholder这样的插件.