2013-04-24 3 views
0

Я пытаюсь сравнить значение элемента формы с его текстом по умолчанию (устанавливается через атрибут title). Если значение VALUE == TITLE, измените значение на строку с нулевой длиной. Однако я не могу заставить его работать. Я уверен, что это просто отсутствие опыта работы с Javascript и jQuery. Большое спасибо.jquery compare elements with serialize

HTML

<form name="results-form" id="results-form"> 

    <input type="text" name="price-min" class="form-textbox-small no-radius defaultText" data="Minimum" title="Minimum" onchange="UpdateSearch()"> 

    <input type="text" name="price-max" class="form-textbox-small no-radius defaultText" data="Maximum" title="Maximum" onchange="UpdateSearch()"> 

</form> 

Javascript

function updateSearch(){ 
    $.each($("#results-form").serializeArray(),function(){ 
     console.log("value: "+this.value+"  data: "+this.data+"  title: "+this.title); 
     if(this.value == this.title){ 

      this.value = ''; 

     } 

    }); 
    var FormData = $("#results-form :input[value!='']").serialize(); 
    console.log(FormData); 
    $(".defaultText").blur(); 
} 

$(document).ready(function() { 


    $(".defaultText").focus(function (srcc) { 
     if ($(this).val() == $(this)[0].title) { 
      $(this).removeClass("defaultTextActive"); 
      $(this).val(""); 
     } 
    }); 

    $(".defaultText").blur(function() { 
     if ($(this).val() == "") { 
      $(this).addClass("defaultTextActive"); 
      $(this).val($(this)[0].title); 
     } 
    }); 

    $(".defaultText").blur(); 
}); 

Console Output

value: 3  data: undefined  title: undefined 
value: Maximum  data: undefined  title: undefined 
+0

T он "* текст по умолчанию *" называется атрибутом 'placeholder', а не' title'. – Bergi

+0

'$ (this) [0] ...' - Ой! Либо используйте plain 'this.title', * или *' $ (this) .prop ("title") '. – Bergi

ответ

1

Попробуйте это:

var arr = $("#results-form").serializeArray(); 

$.each(arr, function (i, input) { 

    var value = input.value; 
    var $elem = $("[name='" + input.name + "']"); 
    var data = $elem.attr('data'); 
    var title = $elem.attr('title'); 

    console.log("value: " + value + "  data: " + data + "  title: " + title); 

    // You can process the parameters here now 
}); 
+1

Спасибо за помощь! – Raythe