0

这里我要做的是,如果我选中复选框,则应使用“,”作为值之间的分隔符将相应复选框的值附加到文本框。如果选中的相应复选框的值为空,则应提醒电子邮件 ID 无效并取消选中值为空的复选框。

工作原理:
       - 如果我选中复选框,则值将附加到文本框。
       - 如果我选中值为空的复选框,我会收到警报。
       - 如果我取消选中这些值会自动从文本框中删除。

什么不工作:
       - 电子邮件 ID 验证不工作。函数已编写,但无法正常工作。(控制台中没有错误)
       - 如果我通过选中具有值的框选择了几个选项,然后如果我选择值为空的复选框,我不会收到无效的电子邮件 ID 警报。

这是下面的代码。

HTML:

   <label>Recipients : </label>
<input style="width:450px;" type="text" id="toaddress" name="toaddress"></input>
<br>

<div class="plist" style="padding:20px;">
    <input type="checkbox" value="abcp@gmail.com">Pradeep</input><br>
    <input type="checkbox" value="cd@gmail.com">Karthik</input><br>
    <input type="checkbox" value="abcn@p.com">akfkl</input><br>
    <input type="checkbox" value="ksake@po.com">afljs</input><br>
    <input type="checkbox" value="">abc</input><br>
    <input type="checkbox" value="">xyzop</input><br>
    <input type="checkbox" value="abc@cto.com">jay</input><br>
    <input type="checkbox" value="">raj</input><br>
</div>

JavaScript:

    function updateTextArea() {
    var allVals = [];
    $('.plist :checked').each(function (i) {

        if ($.trim($('.plist :checked').val()) === '' && validateEmail($('.plist :checked').val())) {
            $(this)
            alert("Email ID is invalid for the selected patient ! \n Example: abc@xyz.com");
        } else {
            allVals.push((i !== 0 ? "\r\n" : "") + $(this).val());
        }
        $('#toaddress').val(allVals).attr('rows', allVals.length);
    });


}
$(function () {
    $('.plist input').click(updateTextArea);
    updateTextArea();
});

function validateEmail($email) {
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    if (!emailReg.test($email)) {
        return false;
    } else {
        return true;
    }
}

JSFiddle 的链接在这里 http://jsfiddle.net/RhjjA/

4

4 回答 4

0

我从你的第一个问题就做到了:jsfiddle.net/hBGD6/4/

两个主要问题是

  • if ("string is empty" AND "validateEmail" ) 不能工作(所以所有字符串都可以)。应该是 if ("string is empty" OR "NOT validateEmail" )
  • validateEmail() 使用的参数是一个函数的返回,该函数为 null(或未定义的东西),这对 emailReg.test() 无效
于 2013-08-23T09:29:56.417 回答
0

您的代码工作正常,除了一个小细节,在您的 if 条件之后,您添加了$(this). 这不是以分号结尾的,也不是必需的。评论此行并尝试。

http://jsfiddle.net/RhjjA/5/

于 2013-08-23T09:01:11.697 回答
0

检查http://jsfiddle.net/RhjjA/3/

  1. 我更改了 validateEmail
  2. 将循环检查时更改为 $(this)。
  3. 我正在考虑检查该值是否为空或无效,因为这些条件都不允许通过检查。所以加了!验证电子邮件的infron。
  4. 我添加了一个$(this).attr('checked', false);

这应该可以帮助您上路。

于 2013-08-23T08:49:30.540 回答
0
if ($.trim($(this).val()) === '' && validateEmail($(this).val())) {
            $(this).attr('checked',false);
            alert("Email ID is invalid for the selected patient ! \n Example: abc@xyz.com");
于 2013-08-23T08:44:46.210 回答