Как условно выполнить проверку JQuery? - PullRequest
4 голосов
/ 24 мая 2010

Я проверяю форму, используя плагин проверки jquery ......

 rules: {
    Name: "required",
    MobileNo: {
           required: true,
           minlength: 10, remote: '<%=Url.Action("getClientMobNo", "Clients") %>'
               },
    Address: "required"
            },
    messages: {
        Name: "please provide a client name",
        MobileNo: {
        required: "Please provide a mobile phone no",
        rangelength: jQuery.format("Enter at least {0} characters"),
        remote: jQuery.format("This MobileNo is already in use")
      },
      Address: "please provide client address"
   },

Это очень хорошо работает при проверке формы добавления, но я использую ту же форму для редактирования, здесь они могут использовать один и тот же номер мобильного телефона, но мой плагин подтверждает, что мобильный номер говорит, что мобильный номер уже существует ... Но как выполнить удаленный атрибут на основе при условии,

   MobileNo: {
           required: true,
           minlength: 10,
          if($("#HfId").val() == ""){ 
            remote: '<%=Url.Action("getClientMobNo", "Clients") %>'
             }
          },

Это допустимый оператор условной проверки jquery .... Как пропустить удаленный атрибут на основе условия ....

Ответы [ 5 ]

0 голосов
/ 01 июня 2010

Я удивлен, что никто больше не упомянул, что делал это таким образом, но я бы предложил использовать метод add rules. После создания объекта проверки вы можете динамически добавлять в него правила по мере необходимости.

 if($("#HfId").val() == "") {
      $("#MobileNo").rules("add", {
          remote: '<%=Url.Action("getClientMobNo", "Clients") %>'
      });
 }

Преимущество такого способа состоит в том, что если у вас есть несколько правил, которые нужно добавить при вставке новой записи, вы можете сгруппировать их все в одном месте. Вы также можете вызвать add несколько раз, если ваша логика становится более сложной. Я предпочитаю добавлять вещи, когда это необходимо, а затем вызывать remove, чтобы убрать их. Вы делаете это после звонка validate().

0 голосов
/ 29 мая 2010

Вы можете принудительно удалить правила после инициализации правил проверки, используя метод rules ('remove') .

$('#yourForm').validate({
  rules: {
    Name: "required",
    MobileNo: {
      required: true,
      minlength: 10, remote: '<%=Url.Action("getClientMobNo", "Clients") %>'
    },
    Address: "required"
  },
  messages: {
    Name: "please provide a client name",
    MobileNo: {
      required: "Please provide a mobile phone no",
      rangelength: jQuery.format("Enter at least {0} characters"),
      remote: jQuery.format("This MobileNo is already in use")
    },
    Address: "please provide client address"
  }
});

if ($('#HfId').val() !== '')
  $('#MobileNo').rules('remove', 'remote');

Таким образом, вам не нужно загромождать свои общие декларативные правила встроенной логикой. Даже если #HfId не существует на странице добавления, он будет без ошибок пропадать (и, очевидно, без удаления удаленного правила), поэтому он применим как к состояниям добавления, так и к изменению.

0 голосов
/ 28 мая 2010

Ну, я бы сделал что-то вроде этого

например, моя php-страница это member.php

чтобы добавить, отправьте URL как этот member.php? Action = add

<? 
$action = $_GET['action'];
?>
<script>
        $("#frmmember").validate({
      rules: { 
        name: { 
                <? if($action=='add') { ?>
                      required: true, 
               <? } ?>
                      rangelength: [4, 50] },
        email: { required: true, rangelength: [5, 50], email: true },
        phone: { required: true, number:true, rangelength: [7, 10] }
        },
      onkeyup: false
    });
</script>

В этом случае обязательное правило проверки = true будет применяться только в том случае, если в переменной URL есть «add» "action"

0 голосов
/ 28 мая 2010

Как насчет использования метода расширения jquery?Добавьте удаленное свойство, если это новая запись или используйте и пустой объект, если это и выходящая запись.

 rules: {
        Name: "required",
        MobileNo: $.extend(
          {
            required: true,
            minlength: 10
          },
          ($("#HfId").val() == "")?{remote: '<%=Url.Action("getClientMobNo", "Clients") %>'}:{}
        ),
        Address: "required",
        messages: {
            Name: "please provide a client name",
            MobileNo: {
              required: "Please provide a mobile phone no",
              rangelength: "Enter at least {0} characters",
              remote: "This MobileNo is already in use"
            },
          Address: "please provide client address"
       }
     }
0 голосов
/ 28 мая 2010

Вам понадобится серверная часть. Либо для обработки редактирования, либо для применения другого действия Url.Action.

Чтобы выполнить действие difnet, чтобы управлять тем, что он редактирует детали, не применяя их одинаково, таким образом, mobileno может быть таким же.

Удачи.

Редактировать Отбрасывает ли он обратно из-за проверки на стороне сервера или Jquery отбрасывает его до того, как он вообще туда попадет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...