如何通过jquery重用选定的id来执行$ .trim()函数

时间:2012-05-10 00:32:37

标签: jquery cakephp

我发现此链接非常有用

get selected textbox id jQuery

然而,我现在要做的是重用这个id来为每个实际循环的文本框做一些修剪功能。我试过这段代码:

<html>
    <head>
        <?php   echo $this->Html->script("jquery-1.4.3.min"); ?>

    </head>
    <body>
    <?php
        echo $content_for_layout;
    ?>
    <script type="text/javascript">
        $(document).ready(function () {
         //       alert('JQuery is succesfully included');

/*      $(':submit').click(function(){
            <?php if(($this->request->controller=='members')&&($this->action=='register')):?>
                    //alert('well');
                    var some = $.trim($(":text").val());
                    alert(some);
            <?php  endif; ?>

            });
*/
            $(':submit').click(function(){
                $('form input[type="text"]').each(function(){
                    //get value of id of textbox here
                    var id = $(this).attr('id');
                    var some = $.trim($((this).attr('id')).val());
                    alert(some);
                });

            });
        });
    </script>
    </body>
</html>

但它没有弹出警报框。

1 个答案:

答案 0 :(得分:0)

我对你想要达到的目标感到有点困惑,但这一行有一个问题:

var some = $.trim($((this).attr('id')).val());

具体而言,(this).attr('id')不起作用,因为(this)被解释为thisthis是当前没有.attr()的DOM元素方法

你可能想要这样做:

var some = $.trim($("#" + $(this).attr('id')).val());
// or, given you already have a variable id equal to $(this).attr('id')
var some = $.trim($('#' + id).val());

也就是说,您正在尝试从当前元素获取id,然后使用该id选择元素并获取其值,然后修剪该值。但是,如果您已经拥有对元素的引用,则不需要id来获取值 - 您可以这样做:

var some = $.trim($(this).val());
// or
var some = $.trim(this.value);

如果要循环浏览所有文本框并将其设置为当前值的剪裁版本,可以执行以下操作:

$('form input[type="text"]').each(function(){
    this.value = $.trim(this.value);
    // or if you want the slower and harder to read way:
    $(this).val( $.trim($(this).val()) );
});

或者:

$('form input[type="text"]').val(function(i,currentVal) {
    return $.trim(currentVal);
});

有关将回调函数传递给.val()的信息,请参阅.val() doco