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 に答える