使用jQuery检查包含警报,然后根据内容运行函数

时间:2016-01-20 00:28:01

标签: javascript jquery alert

我有一个包含几个必填字段的网络表单。当我提交表单时,我的CMS会自动包含一些JS验证来检查。他们的验证看起来像这样:

function checkWholeForm88517(theForm) {
   var why = "";
   if (theForm.CAT_Custom_1) why += isEmpty(theForm.CAT_Custom_1.value, "First Name");
   if (theForm.CAT_Custom_2) why += isEmpty(theForm.CAT_Custom_2.value, "Last Name");
   if (theForm.CAT_Custom_3) why += isEmpty(theForm.CAT_Custom_3.value, "Email Address");
   //etc.

   if (why != "") {
      alert(why);
      return false;
   }
}

当弹出警告时,它将包含如下文字:

- Please enter First Name
- Please enter Last Name
- Please enter Email Address

我想要做的是运行if语句以查看警报是否包含- Please enter First Name,如果是,请执行某些操作。

我试过这样做:

window.alert = function(msg) {

   if ($(this).is(':contains("- Please enter First Name")')) {
       $( ".error-msg" ).append('My Message...');
   }

}

当然,这不起作用,因为我不确定如何定位警报的msg并检查它是否包含文本。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您需要将参数视为字符串而不是上下文对象(window)作为DOM对象。

if (msg.indexOf("some_substring") > 1)

答案 1 :(得分:1)

在您的示例中,this可能是指window个对象。您需要测试message参数是否包含字符串:

window.alert = function(message) {
  if (/- Please enter First Name/.test(message)) {
    $(".error-msg").append(message);
  }
}

Quentin已经说过,但我想提一下,如果你想维护或恢复原来的.alert()行为,你可以保存对该功能的引用:

var _defaultAlert = window.alert;
window.alert = function(message) {
  if (/- Please enter First Name/.test(message)) {
    $(".error-msg").append(message);
  }
  _defaultAlert.apply(window, arguments);
}