【问题标题】:Input value not changed when clicking div单击 div 时输入值未更改
【发布时间】:2018-05-18 09:36:05
【问题描述】:

我想更改输入的值并在单击后提交。 由于某种原因,它没有提交。

点击div时input里面的值增加或者减少,但是没有提交。

当我更改输入和焦点内的值时,它确实保存了。

我在这里错过了什么?

<div class="reduced items item-<?php echo $this->getQty() ?>" onclick="
var result_<?php echo $item->getId() ?> = document.getElementById('qty_<?php echo $item->getId() ?>'); 
var qty_<?php echo $item->getId() ?> = result_<?php echo $item->getId() ?>.value; 
if( !isNaN( qty_<?php echo $item->getId() ?> ) &amp;&amp; qty_<?php echo $item->getId() ?> > 1 ) result_<?php echo $item->getId() ?>.value--;
$(location.href='save').submit();
return false;">-</div>

<input type="text" name="quote_request[<?php echo $item->getId() ?>][qty][]" id="qty_<?php echo $item->getId() ?>" value="<?php echo $item->getQty()*1; ?>" size="4" title="<?php echo $this->__('Qty') ?>" onchange="location.href='save'" class="required-entry validate-zero-or-greater input-text" maxlength="12" />

<div class="increase items" onclick="
var result_<?php echo $item->getId() ?> = document.getElementById('qty_<?php echo $item->getId() ?>'); 
var qty_<?php echo $item->getId() ?> = result_<?php echo $item->getId() ?>.value; 
if( !isNaN( qty_<?php echo $item->getId() ?> )) result_<?php echo $item->getId() ?>.value++;
$(location.href='save').submit();
return false;">+</div>

【问题讨论】:

  • 我在这里缺少什么? - 一些格式化技巧...伙计 - 整理你的格式,你可能会让一些人能够真正看到你的代码... Oo
  • 那段代码不可读。请向我们展示一个实际生成的 HTML 示例,最好是 minimal reproducible example 我也强烈怀疑 $(location.href='save').submit(); 不会做你认为的那样。

标签: javascript jquery html


【解决方案1】:

嗯, 首先,您不应该像以前那样混合您的 php/html/javascript 代码。

其次,避免将 id 或任何其他代码值放在变量名中,而是使用与 id 等效的键值的数组。

第三,使用函数,查看正在发生的问题的简单方法是清理代码。

您的问题是因为您在 jquery 选择器中使用 location.href,我不知道您的表单是什么,但是提交表单的正确方法是这样的:

function click_function_down(item_id) {
    var result[item_id] = document.getElementById('qty_' + item_id); 
    var qty[item_id] = result[item_id].value;
    if( !isNaN( qty[item_id] )
        && qty[item_id] > 1 ) {
            result[item_id].value--;
        }

    $('#yourform').submit();
    return false;
}

function click_function_up(item_id) {
    var result[item_id] = document.getElementById('qty_' + item_id); 
    var qty[item_id] = result[item_id].value;
    if( !isNaN( qty[item_id] ) ) {
            result[item_id].value--;
        }

    $('#yourform').submit();
    return false;
}

还有html代码:

<form id="yourform" action="save">
<div 
class="reduced items item-<?php echo $this->getQty() ?>" 
onclick="click_function_up(<?php echo $item->getId() ?>)">
-
</div>

<input 
type="text" 
name="quote_request[<?php echo $item->getId() ?>][qty][]" 
id="qty_<?php echo $item->getId() ?>" value="<?php echo $item->getQty()*1; ?>" 
size="4" 
title="<?php echo $this->__('Qty') ?>" 
onchange="location.href='save'" 
class="required-entry validate-zero-or-greater input-text"
 maxlength="12" />

<div 
class="reduced items item-<?php echo $this->getQty() ?>" 
onclick="click_function_up(<?php echo $item->getId() ?>)">
-
</div>

试试这个,如果你能解决问题,请告诉我。

【讨论】:

    猜你喜欢
    • 2021-11-25
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2017-06-17
    • 1970-01-01
    相关资源
    最近更新 更多