簡體   English   中英

jQuery inArray函數未在更改選擇時獲取值

[英]jQuery inArray function not grabbing value on change select

我試圖顯示一個元素,如果在選擇中選擇了特定值:

    $(function () {
        $("#add_category3").change(function() {

            var id = $(this).val();

            if (jQuery.inArray(id, vehicles) !== -1)
                $("#vehicle-fields").show();
             else
                $("#vehicle-fields").hide();

            console.log(id);

        });
    });

如果我在inArray()函數中更改實際值的變量id (對值進行硬核),則效果很好,但是當我使用變量id時卻無效。

console.log(id)會返回使que元素顯示出來的實際值,所以我不知道為什么它不起作用。

聽起來您在遇到類型問題。 您必須記住,inArray是類型敏感的。 因此,您的val()以字符串形式(最有可能通過)通過,但該數組具有int數組,則inArray總是會返回-1。 將this.val()調用轉換為int

parseInt($(this).val(), 10);
function inArray(arrays,id){
  var inarray = false;
    for (var i = 0, l = arrays.length; i < l; i++) {
      if (arrays[i] == id) {
        inarray = true;
        break;
      }
    }
  return inarray;
}

使用您自己的自定義inArray。 因為inarray不會將字符串值與整數進行比較。

$(function () {
    $("#add_category3").change(function() {

        var id = $(this).val();

        if (inArray(vehicles,id))
            $("#vehicle-fields").show();
         else
            $("#vehicle-fields").hide();

        console.log(id);

    });
});

嘗試使用trim(id),可能有一些白色間距

由於您在if條件中使用!==,因此無法使用。 在條件中嘗試!=,它將起作用。 使用下面的代碼,我改進了您的代碼。

$(function () {
    $("#add_category3").change(function() {

        var id = $(this).val();

        if (jQuery.inArray(id, vehicles) != -1)
            $("#vehicle-fields").show();
         else
            $("#vehicle-fields").hide();

        console.log(id);

    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM