2012-05-25 43 views
49

我正在嘗試使用可以選擇多個圖像的圖像進行模式對話。我需要從輸入中獲取值然後清空它,但是我無法清空輸入。我試過.val('').val(null),但都不適合我。如何用jQuery清空輸入值?

下面是完整的代碼:

$("#hdselect").click(function(){ 
     $(".modal").html(""); 

     $.post('mediaservice.php',{hd:'ok',images:$("#hdimages").val()},function(data){ 
      $(".modal").append(data); 
     }); 
     $(".modal").dialog({ 
      'modal':true, 
      'title':"Click the image to select", 
      'width':960, 
      'height':600, 
      'resizable':false, 
      'show': {effect: 'drop', direction: "up"}, 
      'buttons': {"Ok": function() { 
        var hd=Array(); 
        var hdval=$("#hdimages").val(); 
        $("#hdimages").attr('value',' '); 
        $("input[name='hd[]']:checked").each(function(){ 
         hd.push($(this).val()); 
        }); 
        if(hdval!=''){ 
         hdval=hdval+","+hd; 
        }else{ 
         hdval=hd; 
        }       
        $("#hdimages").val(hdval); 
        var images=$("#hdimages").val(); 
        $.post('mediaservice.php',{getHd:images},function(data){ 
         $("#imgthumbBase").append(data); 
        }); 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 

的想法是,用戶點擊一個按鈕和一個模式對話框包含多張圖片和複選框打開。此時我需要從輸入中獲取值,然後清除它。

+4

'''$( '輸入')VAL( '')'''會做工作。 **現場示例** - http://jsfiddle.net/fQMmp/1/ 您的意思是與圖像相關的東西? –

+0

我真的不明白你想要做什麼,但$('#inputid')。val('');肯定會清除投入的價值。看看你的代碼,我實際上無法在任何地方看到.val('')? –

+0

請提供一些更多的上下文,這是不可能的,否則你的代碼無法正常工作。 – Christoph

回答

52

你可以嘗試:

$('input.class').removeAttr('value'); 
$('#inputID').removeAttr('value'); 
+1

@VitKos我想這是你的代碼中的另一個問題,你jsut意外地使它的工作... – Christoph

+1

@Christoph也許。所以我要求社區向我展示這一點。 –

+1

這沒有奏效,但.val(「」)爲我工作。包括他們兩個以防萬一另一個不起作用。 –

79

爲了使值清空你可以做到以下幾點:

$("#element").val(''); 

要獲得所選擇的值,你可以這樣做:

var value = $("#element").val(); 

哪裏#element是你要選擇的元素的ID。

+0

這使得值「」而不是NULL。 – user1032531

+2

@ user1032531 - 問題是如何用jQuery清空輸入值,而不是如何爲元素指定「null」值。請在投票答覆之前正確閱讀問題。 –

+1

也許user1032531在你的第一個短語上進行評論*要使值爲空,你可以這樣做......*也許它更清晰寫*空值可以做... * – Adam

13

通常的方式空文本框使用jQuery是:

$('#txtInput').val(''); 

如果上面的代碼比不工作,請檢查您能夠 獲得輸入元素。

console.log($('#txtInput')); // should return element in the console. 

如果仍然面臨同樣的問題,請張貼您的代碼。

5

另一種方法是:

$('#element').attr('value', ''); 
+0

如果文本寫入輸入域,它不會重置該值。因爲該值不會在值attr內。 – Mahi

15

更好的方法是:

$("#element").val(null); 
+0

截至HTML5和2017年 - Chrome至少不再增加價值屬性。所以這是唯一可以在Chrome中使用的工具。還沒有測試過其他瀏覽器。 – Routhinator

1
$('.reset').on('click',function(){ 
      $('#upload input, #upload select').each(
       function(index){ 
        var input = $(this); 
        if(input.attr('type')=='text'){ 
         document.getElementById(input.attr('id')).value = null; 
        }else if(input.attr('type')=='checkbox'){ 
         document.getElementById(input.attr('id')).checked = false; 
        }else if(input.attr('type')=='radio'){ 
         document.getElementById(input.attr('id')).checked = false; 
        }else{ 
         document.getElementById(input.attr('id')).value = ''; 
         //alert('Type: ' + input.attr('type') + ' -Name: ' + input.attr('name') + ' -Value: ' + input.val()); 
        } 
       } 
      ); 
     }); 
+4

如果你能解釋......一般的好處...... – Samer

+0

通過使用上面的代碼片段,你可以重置整個表單,其中可能包含輸入字段,複選框,單選按鈕和選擇字段。我們可以設置所有這些類型的默認值。 – raji