JQuery each()函数用于提交带有confirm的表单

JQuery each()函数用于提交带有confirm的表单,jquery,each,confirm,Jquery,Each,Confirm,我正在尝试使用jquery执行确认对话框,表单被提交,但它没有执行if条件,我有一个表单.table,其中包含多个.profit表。提交时,我希望它检查利润表列中的每个销售价格和成本,如果成本>销售价格,则不提交,否则提交 问题是页面总是提醒确认窗口,我不知道为什么。 这就是我得到的: $(".table").submit(function(event) { $('.salePrice').each(function() { var $table = $(this).parents('.

我正在尝试使用jquery执行确认对话框,表单被提交,但它没有执行if条件,我有一个表单
.table
,其中包含多个
.profit
表。提交时,我希望它检查
利润表列中的每个销售价格和成本,
如果成本>销售价格
,则不提交,否则提交

问题是页面总是提醒确认窗口,我不知道为什么。 这就是我得到的:

$(".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;
 }});
$(“.table”).submit(函数(事件){
$('.salePrice')。每个(函数(){
var$table=$(this.parents('.profice');
var cost=$table.find('.cost').val();
如果($(this).val()<成本){
如果(确认(“成本大于售价,你确定吗?”){
结果=真;
返回false;
}否则{
结果=假;
返回false;
}
}
});
如果(结果){
返回true;
}
否则{
返回false;
}});
如果用户单击“确认”,将检查是否提交表单。我希望这是有道理的。谢谢


jsfiddle中的HTML:

您的浏览器将值解释为字符串(例如:“4.99”),并且对字符串值进行比较,因此它是alpha比较,而不是数字比较。尝试集成
parseInt
。另外,我认为您的逻辑在最后一个if语句中被颠倒了,我在运行它时遇到了一个问题,因为没有定义“result”。试试这个:

$(".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;
 }
 });
$(“.table”).submit(函数(事件){
var结果=真;
$('.salePrice')。每个(函数(){
var$table=$(this.parents('.profice');
var cost=parseInt($table.find('.cost').val());
var price=parseInt($(this.val());
如果(价格<成本){
如果(确认(“成本大于售价,你确定吗?”){
结果=真;
返回false;
}否则{
结果=假;
返回false;
}
}
});
如果(!结果){
返回false;
}
否则{
返回true;
}
});

JSFIDLE:

我尝试
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;
}});
$(“.table”).submit(函数(事件){
var isOK=真,r=假;
$('.salePrice')。每个(函数(){
var$table=$(this.parents('.profice');
var cost=$table.find('.cost').val();
if(parseInt($(this).val(),10)
你能显示你的HTML吗?你能在jsbin或JSFIDLE中共享吗?THX!我在jsfiddle.demo中编写它,它缺少jquery依赖项…请看抛出的错误。你能详细说明什么是错的或者如何复制它吗?奇怪。。代码在JSFIDLE中按预期工作,但在我的开发区域中不起作用。我只是想知道,在每个()函数中,无论之前做了什么,在我的示例中结果总是为false?这很奇怪。在代码的其他地方是否定义了一个名为“result”的变量?另外,您是否有一个测试服务器,在那里我们可以看到代码出现故障?