2009-09-24 65 views
1

我试图调用另一个jQuery的功能,如果确认是真的,下面的代码:调用另一个jQuery的功能,如果确认是真的

jQuery("#adminForm_1").submit(function() { 

    var empty = false; 
    jQuery(":input", "#adminForm_1").each(function() { 
     empty = (jQuery(this).val() == "") ? true : empty; 
    }); 
    if (empty) { 

     if (confirm('You have not filled out all of the fields, do you wish to continue?')) { 

      jQuery("#adminForm_1").validationEngine({ 
       ajaxSubmit: true, 
       ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save", 
       ajaxSubmitMessage: "Client Trip Details Saved", 
       inlineValidation: false, 
       success: false, 
       failure: function() {} 
      }); 

     } else { 
      return false; 
     }; 

    } 

}); 

^^上面的代码不工作,但你会看到我想要做的..

+0

会发生什么事,当你运行它? – karim79 2009-09-24 05:26:36

+0

它刷新页面,并在FF虽然不叫.validationEngine素文字..没有错误.. – SoulieBaby 2009-09-24 05:27:52

+0

在没有JavaScript错误.. :) – SoulieBaby 2009-09-24 05:34:44

回答

3

您需要防止的形式,这是它的传统方式提交到服务器上浏览器的默认操作。无论return false在您提交处理程序结束,或将e.preventDefault()开头:

jQuery("#adminForm_1").submit(function (e) { 
    e.preventDefault(); 
    ... 

或:

jQuery("#adminForm_1").submit(function() { 

    var empty = false; 
    jQuery(":input", "#adminForm_1").each(function() { 
     empty = (jQuery(this).val() == "") ? true : empty; 
    }); 
    if (empty) { 
     if (confirm('You have not filled out all of the fields, do you wish to continue?')) { 
      ... 
      }); 
     } 
    } 
    return false; 
}); 

preventDefault

从执行 默认阻止浏览器行动。使用 isDefaultPrevented知道这种方法是否 曾经被称为(即 事件对象)的方法。

由于作为边注return false具有如preventDefault同样的效果,再加上它停止事件的冒泡到父元素。 jQuery的实现机制在stopPropagation方法中。换句话说,return false = e.preventDefault + e.stopPropagation

1

你不停止“正常”从传播事件提交 - 尝试.validationEnginge()方法之后加入return false(或者移动它的if块):

jQuery("#adminForm_1").submit(function() { 
    var empty = false; 
    jQuery(":input", "#adminForm_1").each(function() { 
     empty = (jQuery(this).val() == "") ? true : empty; 
    }); 
    if (empty) { 
     if (confirm('You have not filled out all of the fields, do you wish to continue?')) { 
      jQuery("#adminForm_1").validationEngine({ 
       ajaxSubmit: true, 
       ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save", 
       ajaxSubmitMessage: "Client Trip Details Saved", 
       inlineValidation: false, 
       success: false, 
       failure: function() {} 
      }); 
     } 
     return false; 
    } 
}); 

甚至

jQuery("#adminForm_1").submit(function() { 
    var empty = false; 
    jQuery(":input", "#adminForm_1").each(function() { 
     empty = (jQuery(this).val() == "") ? true : empty; 
    }); 
    if (empty) { 
     if (confirm(...)) { 
      jQuery("#adminForm_1").validationEngine({ ... }); 
     } 
    } 
    return false; 
}); 
相关问题