添加新地址时新添加的字段未显示验证错误

时间:2014-05-23 06:54:14

标签: javascript jquery validation opencart

我自定义我的opencart,在我的结帐时添加一个电话字段。即时通讯使用单页结帐分机,除了验证电话号码外,还可以使用。

问题是当我选择新地址的选项时,它会验证所有其他字段并在字段下方显示相关错误。但是在电话领域,当我通过萤火虫检查时,错误就会被抛出,但不会低于锉刀。

我完成了其他领域的工作

下面是该字段的HTML代码

<tr>
<td><label for="telephone"><span class="required">*</span> Phone Number</label>  </td>
<td><input type="text" name="telephone_2" required class="large-field" /><br /></td>
</tr>

JS代码

$('#<?php echo $type; ?>-address input[name=\'address_1\']').live('blur', function() {
    valiform<?php echo $type; ?>("address_1","");
});

$('#<?php echo $type; ?>-address input[name=\'address_1\']').live('focus', function() {
    errorremove<?php echo $type; ?>("address_1");
});

$('#<?php echo $type; ?>-address input[name=\'telephone_2\']').live('blur', function() {
    valiform<?php echo $type; ?>("telephone_2","");
});

$('#<?php echo $type; ?>-address input[name=\'telephone_2\']').live('focus', function() {
    errorremove<?php echo $type; ?>("telephone_2");
});

function valiform<?php echo $type; ?>(vname, othername){
    $.ajax({
        url: 'index.php?route=onecheckout/form/validate',
        type: 'post',
        data: $('#<?php echo $type; ?>-address input[name=\''+vname+'\']'+othername),
        dataType: 'json',
        success: function(json) {                       
            if (json['error'][vname]) {
                errorremove<?php echo $type; ?>(vname);
                $('#<?php echo $type; ?>-address input[name=\''+vname+'\'] + br').after('<span id="error_'+vname+'" class="error">' + json['error'][vname] + '</span>');
            }
        }
    }); 
}

function errorremove<?php echo $type; ?>(vname) {
    if($('#<?php echo $type; ?>-address #error_'+vname)){
        $('#<?php echo $type; ?>-address #error_'+vname).remove();
    }
}

请查看以下截图 enter image description here

有人可以告诉我,我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

我会更改此HTML标记

<td><input type="text" name="telephone_2" required class="large-field" /><br /></td>

<td><input type="text" name="telephone_2" required class="large-field" /></td>

(所以删除<br />标签)然后在JS中更改这一行:

$('#<?php echo $type; ?>-address input[name=\''+vname+'\'] + br').after('<span id="error_'+vname+'" class="error">' + json['error'][vname] + '</span>');

进入这个:

$('#<?php echo $type; ?>-address input[name=\''+vname+'\']').after('<br /><span id="error_'+vname+'" class="error">' + json['error'][vname] + '</span>');