2016-08-08 35 views
0

在發出Ajax請求之後,我希望將我的表單元素重置爲其原始值,但三個選擇輸入除外,因爲它們的值將會很快被使用。使用JQuery恢復Html,除了一些元素

我宣佈超出這個變量「的文件準備好」:

var estado_inicial_cuerpo; 

我在「文件準備好」功能嘗試這樣做:

estado_inicial_cuerpo=$("#formulario_venta").clone().children('#id_bodega_idbodega').remove().children('#id_caja_idcaja').remove().end(); 

而在阿賈克斯的「成功」的一部分(或者如果你喜歡,在一些按鈕激活此代碼),這一個:

$('#formulario_venta').html(estado_inicial_cuerpo); 

但是,在控制檯中,我可以看到該頁面就像使用該代碼加載了兩次一樣,並且整個表單都變爲空白,所有元素都消失了。

我的表單ID是formulario_ventaid_caja_idcaja,id_bodega_idbodega是我想要跳過的選擇輸入的ID。


現在這個我試過的「文件準備」裏面的代碼:

estado_inicial_cuerpo=$("#formulario_venta").not("#id_bodega_idbodega, #id_caja_idcaja").html(); 

現在形式不dissapear,但一切都恢復了,包括我裏面「而不是」寫的元素。

+0

你可能不會停止'submit'事件 –

+0

@JaromandaX其實我正在這樣做,因爲沒有該代碼everyting工作正常。我有這個表單提交:$('#formulario_venta')。on('submit',function(event){ event.preventDefault(); //更多代碼在這裏 }); – masozow

+0

足夠公平,如果這是如何使用jqueery –

回答

0

你試過:

$('#formulario_venta').find('input, textarea, select').not("#id_bodega_idbodega, #id_caja_idcaja").val(""); 

你說的所有投入將有value = ""(空),除了一個是內部.not()

.find('input, textarea')這樣的輸入您的表單可能的類型有

+0

工作正常!偉大的解決方案:D – masozow

+0

甚至更​​好,這將添加一個類到你想要重置的所有輸入,然後你只寫.find('。inputToReset).val(''),而不使用.not() –

0

關於嘗試如何只是

estado_inicial_cuerpo = $("#formulario_venta").html() 

你有什麼樣?

+0

我的代碼真的很大,但我會嘗試做一個小樣本。我已經使用了這種方法來重置Select輸入,但是如果我在表單上使用它,它將被完全恢復,並且我想跳過恢復中的某些元素,選擇輸入是精確的。所以,選擇輸入必須保持其價值。 – masozow

+0

只是將表單元素扔到jsfiddle或codepen中供我們玩耍。或者,如果元素不是動態的,只需定位您需要清除的元素。 –

+0

我不知道這是否會工作,但我試過這個:[https://jsfiddle.net/gcobn8du/1/] – masozow

0

首先從元素中清除html然後重新賦值。

$('#formulario_venta').html(''); 
$('#formulario_venta').html(estado_inicial_cuerpo); 
+1

直接分配給'。html()'會做同樣的事情。不需要分配空的。 –

+0

我試過了,並得到了相同的結果,所有的形式消失。我不知道這些「兒童」和「刪除」部分是否確實有效。 – masozow