2016-05-16 102 views
0

我有一個帶有文本框列的表,我想獲取舊值並將其設置爲文本框onchange如何設置輸入文本框的值jquery

 <span class="txt_b"> 
      <input type="number" name="" value="<?php echo $req; ?>" onchange="onChangeTest(this)" onchange="setoldvalue(this)" oldvalue="" class="input_md radious_all innershadow padding_control" id ="tk" style="width:60px;" id="qty_req_<?php echo $i; ?>" onblur="editBucket('<?php echo $row_id; ?>','<?php echo $item['Item']['code']; ?>',$('#qty_war_<?php echo $i; ?>').val(),this.value,'<?php echo $date; ?>',$('#stock_notes_<?php echo $i; ?>').val(),'<?php echo $item['Item']['pack_size']; ?>')"/> 
     </span> 
    </div> 
    <input type="hidden" name="product" id="qty_reqty_" class="product" value="qty_reqty_<?php echo $i; ?>" /> 
</div> 
<script> 
    function getoldvalue() 
     { 
      $('input').on('focusin', function(){ 
       console.log("Saving value " + $(this).val()); 
       $(this).data('val', $(this).val()); 
      }); 

      $('input').on('change', function(){ 
       var prev = $(this).data('val'); 
       $('input').val(prev); 
       console.log(s); 
       var current = $(this).val(); 
       console.log("Prev value " + prev); 
       console.log("New value " + current); 
      }); 

我很努力地將值設置爲文本框。如何通過id

這是我的jQuery的對話框

功能editCart(ID,密碼,stock_wh,stock_rq,日期,票據,包裝){

if((stock_rq%pack) != 0){ 

    $('<div></div>').appendTo('body') 
    .html('<div id="dialog"><h3>The quantity should be multiple of pack size, do you wish to continue with the quantity entered?</h3></div>') 
    .dialog({ 
    modal: true, 
    title: 'message', 
    zIndex: 10000, 
    autoOpen: true, 
    width: 'auto', 
    resizable: true, 
    buttons: { 

    Yes: function() { 
      doFunctionForYes(); 
      $(this).dialog("close"); 
     }, 

    No: function() { 
      doFunctionForNo(); 

      $(this).dialog("close"); 
     } 
    }, 

    close: function (event, ui) { 
     $(this).remove(); 
    } 
}); 
$('#msg').hide(); 

function doFunctionForYes() { 

    $('#msg').show(); 

} 
function doFunctionForNo() { 
alert("doFunctionForNo"); 

    }); 

} 

} 
+0

難道'$(本).VAL(上一張)'做呢?您當前的$('input').val(prev)'設置* all *輸入元素的值。我不明白你想要做什麼 - 你是說在用戶改變你想要的值之後馬上把它重新設置回它以前的值? – nnnnnn

+0

$('input').val(prev)將更改列中的所有文本框 – jdoe

+0

是的,這就是我已經說過的。 – nnnnnn

回答

0

你有定義的HTML一些問題:

  1. 不能有一個輸入的2個id屬性
  2. 不能有2個onchange變化
  3. OLDVALUE不規範屬性

可以數據OLDVALUE屬性設置爲你的輸入並訪問與jQuery

<input type="text" id="qty_req_<?php echo $i; ?>" data-oldvalue="<?php echo $req; ?>" /> 

<script> 
$(document).ready(function() { 
    oldvalue = $("#qty_req_<?php echo $i; ?>").data('oldvalue'); 
}); 
</script> 

jQuery代碼是爲樣本,到處可以從這個代碼中使用您需要

+0

在console.log()它給了我一個空值 – jdoe

+0

你如何測試? –

+0

我在我的電腦上測試過 – jdoe

0

首先你可以使用$(this).data,同時保存價值,只有當你有html5。所以我剛剛添加它爲$(this).attr('data-val')。現在問題是,即使您輸入了任何新內容,並且在將input value更改爲舊value之後,您仍舊得到current value,因爲value對於input始終具有舊值。當您登錄console.log(s)時,也出現undefined錯誤,因爲s未在任何地方定義。

$('input').on('focus', function() { 
 
    $('body').append("<br/>Saving value " + $(this).val()); 
 
    $(this).attr('data-val', $(this).val()); 
 
}); 
 

 
$('input').on('change', function() { 
 
    var prev = $(this).data('val'); 
 
    var current = $(this).val(); 
 
    $(this).val(prev); 
 
    console.log("Prev value " + prev); 
 
    console.log("New value " + current); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <span class="txt_b"> 
 
    <input type="number" name="" value="20" class="input_md radious_all innershadow padding_control" id ="tk" style="width:60px;" id="qty_req_<?php echo $i; ?>"/> 
 
    </span> 
 
</div> 
 
<input type="hidden" name="product" id="qty_reqty_" class="product" value="qty_reqty_<?php echo $i; ?>" />

+0

這部分不工作$(this).attr('data-val',$(this).val()); – jdoe

+0

它的工作原理,你檢查了'DOM'元素..運行上面的代碼片段,你會看到它.. –

+0

它永遠不會改變爲舊值? – jdoe

相關問題