jQuery在更改值之前触发更改

时间:2016-03-18 10:44:18

标签: javascript php jquery

当从下拉列表中选择一个选项时,我正在使用jquery来更改输入字段的值。这些字段最初通过php

填充值
<label><?php echo $size->size ?></label><input type="number" name="<?php echo $lineno ?>-<?php echo $size->id ?>" id="<?php echo $lineno ?>-size<?php echo $sizeblock; ?>" class="form-control" value="<?php echo $size->qty ?>" title="">

一旦页面加载,这些值似乎被jquery覆盖。在下拉列表值实际更改之前,如何将这些值保留在输入字段中?我的js如下:

jQuery(document).ready(function($) {

$("[id^=packs]").on('change', function() {              
var packname = this.value;
console.log("packname:"+packname);
var lineno = this.getAttribute('data-lineno');
console.log("lineno: "+lineno);
$.ajax({
    type: "post",
    url: "<?php echo base_url(); ?>products/pack",
    cache: false,
   // ContentType : 'application/json',               
    data: {name: packname},
    success: function(json){                        
    try{        
        var obj = jQuery.parseJSON(json);
        console.log(obj);
        console.log("size1: "+obj.packdetail[0].size1);

2 个答案:

答案 0 :(得分:0)

如果$("[id^=packs]")发生更改,您发布的代码只会更改值。也许你还没有提供其他代码来实际修改输入。

也许您想尝试使用浏览器调试器(例如chrome开发人员工具)来检查某些代码是否已执行。 只需在change-event-callback中添加debugger;,然后使用打开的Debugger重新加载页面。如果此代码部分被执行,它将停在那里。

另一个可能性是跟踪(由php初始填充)输入字段的属性更改。看到 Set breakpoint to event in google chrome debugger

答案 1 :(得分:0)

上面的代码按预期工作。当表单的值保存时,我没有更改id以对应数据库更新。因此,实际的数据库字段的值为0,并且不是PHP问题。