Ошибка проверки значения ввода формы с помощью jQuery - PullRequest
1 голос
/ 27 апреля 2011

Я хочу выполнить оператор if, основываясь на значении скрытого ввода в myform.

Сценарий состоит в том, что у меня есть таблица, состоящая из тестов.Каждый тест по сути своей формы.скрытый ввод в основном содержит «ДА», если к тесту прикреплен пароль.Я хочу предложить пользователю ввести пароль, если это тот случай, когда он пытается выполнить определенный тест (отправьте форму).

, вот мой код, который я пытаюсь:

$("#submit").live('click', function(event) {
    if ($(this).parent().find(':input:hidden[name=has_password]').val() == 'YES') {
            $('.messagepop').remove();
                $(this).parent().append('<div class="messagepop pop"><p><label for="password">Enter test password</label><input type="text" size="30" name="pass" id="pass" /></p><p><input type="button" id="submitPass" value="GO" id="pass_submit"/> or <a class="close" href="/">Cancel</a></p></div>');
                $(".pop").slideFadeToggle(function() { 
                $("#pass").focus();
                });
                return false;
    }  
});

Без оператора if код работает: при нажатии определенной кнопки внутри формы появляется другая маленькая форма ввода пароля.Однако я хочу, чтобы форма всплывала только в том случае, если значение скрытого ввода - «ДА».

Я проверил, что значения присутствуют в скрытом вводе.

Я предполагаю, что использую jQuery немного неправильно, так как я новичок.Так может кто-нибудь определить лучший способ выполнения проверки?

Большое спасибо,

РЕДАКТИРОВАТЬ (jsfiddle с html и т. Д.):

jsfiddle

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Ваш HTML-код очень искажен.Конечные теги <tr> и <form> не совпадают, у вас есть тег <form> непосредственно внутри <tr>, что недопустимо, вы не закрыли свои теги <input /> самостоятельно, и у вас естьдубликаты идентификаторов на той же странице.

<tr>
  <form name='myform' method='post' action='test_sim.php'>
    <input name='test' type='hidden' value='1'>
    <input type='hidden' name='has_password' value='NO'>
    <td>TEST 1</td>
    <td>B352</td>
    <td>10</td>
    <td>2011-05-12 06:00:00</td>
    <td>2011-05-12 12:00:00</td>
    <td>06:00:00</td>
    <td><input id='submit' type='button' value='execute test'></td>
  </tr>
</form>

Это должно быть так:

<tr>
  <td>TEST 1</td>
  <td>B352</td>
  <td>10</td>
  <td>2011-05-12 06:00:00</td>
  <td>2011-05-12 12:00:00</td>
  <td>06:00:00</td>
  <td>
    <form name='myform' method='post' action='test_sim.php'>
      <input name='test' type='hidden' value='1' />
      <input type='hidden' name='has_password' value='NO' />
      <input class='submit' type='button' value='execute test' />
    </form>
  </td>
</tr>

Исправление HTML решает вашу проблему: http://jsfiddle.net/brianpeiris/ezFgU/16/

Вы должны использовать W3C Validator tool для проверки вашего HTML, чтобы вы могли предотвратить эти типы проблем.

Редактировать: Как упоминалось в mcgrailm, ваши атрибуты id дублируются.Кажется, jQuery прощает, поэтому вышеприведенный jsFiddle работает.Вы должны использовать класс, чтобы идентифицировать кнопки отправки и использовать соответствующий селектор $('.submit'), чтобы прикрепить обработчик кликов.

1 голос
/ 27 апреля 2011

я думаю, что ваш селектор неправильный попробуйте это

$("#submit").live('click', function(event) {
    if ($(this).parent().find('input[name="has_password"]:hidden').val() == 'YES') {
            $('.messagepop').remove();
                $(this).parent().append('<div class="messagepop pop"><p><label for="password">Enter test password</label><input type="text" size="30" name="pass" id="pass" /></p><p><input type="button" id="submitPass" value="GO" id="pass_submit"/> or <a class="close" href="/">Cancel</a></p></div>');
                $(".pop").slideFadeToggle(function() { 
                $("#pass").focus();
                });
                return false;
    }  
});

РАБОЧИЙ ДЕМО

1 голос
/ 27 апреля 2011

я считаю

if ($(this).parent().find(':input:hidden[name=has_password]').val() == 'YES')

должно быть

 if ($(this).parent().find('input[name=has_password]:hidden').val() == 'YES')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...