Change()不会与类标识符反应
每当一个字段(全部同一个类)的值发生变化时,我需要执行某些操作。 但它并没有工作。
$('.payment-amount').change(function () {
ajax_get_supposed_money_left();
});
我不知道为什么。 我用ID而不是类和everytnig工作正常完全相同的行动:
$('#tripsummary-money_begin').change(function () {
ajax_get_supposed_money_left();
});
该类是正确指定的,因为在我的函数中我使用$('.payment-amount').val()
并返回正确的值。 在使用change()
动作时它只是不想工作。
编辑:
我使用Yii2,因此相关Html的部分如下所示:
DynamicFormWidget::begin([
'widgetContainer' => 'dynamicform_wrapper_expenses', // required: only alphanumeric characters plus "_" [A-Za-z0-9_]
'widgetBody' => '.container-expenses', // required: css class selector
'widgetItem' => '.item-expense', // required: css class
'limit' => 99, // the maximum times, an element can be cloned (default 999)
'min' => 0, // 0 or 1 (default 1)
'insertButton' => '.add-item-expense', // css class
'deleteButton' => '.remove-item-expense', // css class
'model' => $expense_models[0],
'formId' => 'expense-create-form',
'formFields' => [
'amount',
'category',
'comment',
],
]);
?>
<div class="panel-body container-items">
<div class="panel-heading font-bold">
<button type="button" class="pull-left add-item-expense btn btn-success btn-xm"><i class="fa fa-plus"></i> <?= Yii::t('app', 'Add') ?></button>
<div class="clearfix"></div>
</div>
<div id="payments-container" class="panel-body container-expenses"><!-- widgetContainer -->
<?php foreach ($expense_models as $index => $model): ?>
<div class="item-expense"><!-- widgetBody -->
<div>
<?php
// necessary for update action.
if (!$model->isNewRecord) {
echo Html::activeHiddenInput($model, "[{$index}]id");
}
?>
<div class="row">
<div class="col-md-3">
<?=
$form->field($model, "[{$index}]amount")->textInput(['class' => 'form-control payment-amount'])->label(Yii::t('app', 'Amount'))
?>
</div>
<div class="col-md-3">
<?=
$form->field($model, "[{$index}]trip_summary_category_id")->dropDownList(ArrayHelper::map(TripSummaryCategory::find()->all(), 'id', 'name'), [
'class' => 'form-control payment_type',
])->label(Yii::t('app', 'Category'))
?>
</div>
<div class="col-md-3" >
<?=
$form->field($model, "[{$index}]comment")->textInput()->label(Yii::t('app', 'Comment'));
?>
</div>
<button type="button" class="custom-remove-btn remove-item-expense btn btn-danger glyphicon glyphicon-remove"></button>
</div><!-- end:row -->
</div>
<div class="custom-divider"></div>
</div>
<?php endforeach; ?>
</div>
<?php DynamicFormWidget::end(); ?>
</div>
我终于找到了答案。 由于在开始时没有付款金额类的字段,所以代码不能按我想要的方式执行。 为了防止这个我使用:
$('body').on('change', '.payment-amount', function() {
console.log($(this).val());
// rest of code
});
所以,根据jQuery API(提供的第一个例子):
事件处理程序可以绑定到文本输入和选择框:
$( ".target" ).change(function() {
alert( "Handler for .change() called." );
});
现在,当从下拉列表中选择第二个选项时,将显示警报。 如果您更改字段中的文本然后单击,也会显示它。 但是,如果在没有改变内容的情况下该字段失去焦点,则该事件不会被触发。
在提供的示例中,尝试在输入中输入某些内容,然后使其失去焦点(单击它之外)。 您将在控制台中看到键入的值。
var paymentAmountInputs = $(".payment-amount");
paymentAmountInputs.change(function(evt) {
console.log($(this).val())
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<input type="text" class="payment-amount" value="0" />
链接地址: http://www.djcxy.com/p/38627.html