2017-01-16 5 views
1
私はjqueryのを使用して確認ダイアログをやろうとしている

でフォームを送信するために、各()関数は、フォームが送信ますが、それは場合の条件をしなかった、私は複数の.profitテーブルが含まれているフォーム.tableを持っていました。提出する場合は、.profitテーブルの列、if cost > salePriceの各salePriceとコストを確認したい場合は、提出しないでください。jQueryの確認

問題はページが常に確認ウィンドウを警告している、私はなぜわからない。 これは私が得たものである:

$(".table").submit(function(event) { 
    $('.salePrice').each(function() { 
    var $table = $(this).parents('.profit'); 
    var cost = $table.find('.cost').val(); 
    if($(this).val() < cost) { 
     if(confirm("cost is larger than salePrice, are you sure?")){ 
      result = true; 
      return false; 
     } else { 
      result = false; 
      return false; 
     } 
    } 
}); 
if (result) { 
    return true; 
    } 
    else { 
    return false; 
}}); 

ユーザーがクリックするが、それは天気がフォームを送信するかどうかチェックします確認してください。私はこれが理にかなってほしい。ありがとう。

jsfiddleでHTML:https://jsfiddle.net/6jjhmb7L/1/

+0

HTMLを表示できますか? – vvtx

+0

jsbinやjsfiddleで共有できますか? –

+0

THX!私はそれをjsfiddleに書きます。 –

答えて

0

私は修正し、その後、parseIntを試してみて、ハンドラを追加!

$(".table").submit(function(event) { 
var isOK = true, r = false; 

$('.salePrice').each(function() { 
    var $table = $(this).parents('.profit'); 

    var cost = $table.find('.cost').val(); 

    if (parseInt ($(this).val(), 10) < parseInt (cost, 10)) { 
     if (!r) r = confirm ("cost is larger than salePrice, are you sure?"); 
     isOK = isOK & r; 
    } 
}); 

if (isOK) { 
    return true; 
} else { 
    return false; 
}}); 
1

お使いのブラウザは値を文字列として解釈される(例:「4.99」)と比較すると、文字列値に起こっているので、代わりに数値比較のアルファ比較であります。 parseIntを統合してみてください。また、私は最後のif文であなたのロジックが逆転したと思うし、結果が定義されていないために実行しているときに問題があった。これを試してみてください:

$(".table").submit(function(event) { 
    var result = true; 
    $('.salePrice').each(function() { 
    var $table = $(this).parents('.profit'); 
    var cost = parseInt($table.find('.cost').val()); 
    var price = parseInt($(this).val()); 
    if(price < cost) { 
     if(confirm("cost is larger than salePrice, are you sure?")){ 
      result = true; 
      return false; 
     } else { 
      result = false; 
      return false; 
     } 
    } 
}); 
if (!result) { 
    return false; 
    } 
    else { 
    return true; 
} 
}); 

jsFiddle:https://jsfiddle.net/mspinks/xtch7hg8/5/

+0

奇妙な..コード私の開発区域ではなく、jsfiddleで期待どおりに動作します。私はそれぞれの()関数で、前に何をしていても、結果は常に私の例ではfalseになると思っていますか? –

+0

それは変です。あなたのコードのどこかに "result"という変数が定義されていますか?また、コードが誤動作していることがわかるテストサーバーもありますか? –