2013-04-24 70 views
0

我試圖比較表單元素的值與它的默認文本(通過標題屬性設置)。如果VALUE == TITLE,則將該值更改爲長度爲零的字符串。但是,我似乎無法使其工作。我相信這只是我缺乏Javascript和jQuery的經驗。非常感謝。jquery與序列化比較元素

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(); 
}); 

控制檯輸出

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

ŧ他「*默認文本*」被稱爲「佔位符」,而不是「title」屬性。 – Bergi 2013-04-24 20:07:05

+0

'$(this)[0] ...' - 哎唷!可以使用普通的'this.title',*或*'$(this).prop(「title」)'。 – Bergi 2013-04-24 20:08:08

回答

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 2013-04-24 21:04:16