2012-05-17 3 views
0

Я пытаюсь получить значение кнопки (поле ввода или поля кнопки) каждый раз при отправке формы. Я думаю, что у меня проблемы с логикой, потому что вторая не работает.Если это, но не так, то если это, но не это ... Логика

Здесь на jsFiddle http://jsfiddle.net/uqj88/23/

Это особенно часть, которая не работает должным образом. Если он не находит вход, где вводится тип, он даже не ищет элемент кнопки.

$('form').submit(function() { 
     if ($(this).children("input[type='submit']") != "") { 
      submitButton = $(this).children("input[type='submit']"); 
      if (submitButton.attr("value") != ""){ 
        linkText = submitButton.attr("value") + " - Button"; 
      } 
      else if ((submitButton.attr("value") === "") && (submitButton.prop("id") != "")) { 
        linkText = submitButton.prop("id") + " - Button"; 
      } 
      else if ((submitButton.attr("value") === "") && (submitButton.prop("class") != "")) { 
        linkText = submitButton.prop("class") + " - Button"; 
      } 
      else { 
        linkText = "Form Submitted - Button"; 
      } 
     } 
     else if ($(this).children("button") != "") { 
      submitButton = $(this).children("button"); 
      linkText = submitButton.text() + " - Button"; 
     } 
     window.alert(linkText); 
    }); 
+1

Oy; рефакторинга, затем выясните это. –

+1

'$ (this) .children (" button ")' никогда не будет равно '' '', это всегда объект, даже если он не находит элементы. То же самое верно для вашего первого оператора if. –

ответ

1

Эта линия:

$(this).children("input[type='submit']") != "" 

должно быть:

$(this).children("input[type='submit']").length 

объекты JQuery всегда объекты, независимо от того, они или не содержат элементов. Объект никогда не будет равен "".

Повторите то же изменение для своего еще, если состояние.

+0

Ах, я вижу. Если элемент не найден, он ничего не возвращает? – zen

+0

Он возвращает пустой объект jQuery, но он все еще является объектом. Он просто имеет свойство длины 0, которое является фальшивым значением в javascript. –

+0

Хорошая сделка. Огромное спасибо! – zen

Смежные вопросы