2016-05-16 99 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

相关问题