代码之家  ›  专栏  ›  技术社区  ›  bristows

Jquery方法运行,但不改变textbox文本的大小写

  •  0
  • bristows  · 技术社区  · 14 年前

    我编写了一个简短的jquery方法,在文本框的keypress事件上,应该将文本框的内容更改为大写。方法激发并显示警报,但文本的大小写从不更改为大写。

    下面是jquery方法

    $("#TestText").bind('keyup', function (e) {
        var mytext = $("#TestText").val();
        $(mytext).text($(mytext).text().toUpperCase());
        alert(mytext);
        $("#TestText").val() = $(mytext);
    });
    

    4 回复  |  直到 14 年前
        1
  •  4
  •   user113716    14 年前

    要引用接收事件的元素,可以使用 this .

    你所做的就是把课文收起来 $() 就像你在选择一个元素。

    .val() 通过做 = $(mytext)

    jQuery的 得到

    $("#TestText").bind('keyup', function (e) {
            // get the value of the input
        var mytext = $(this).val();
            // set the value of the input
        $(this).val(mytext.toUpperCase());
    });
    

    编辑: 缓存重用的jQuery对象总是一个好主意。

    $("#TestText").bind('keyup', function (e) {
        var $th = $(this);
            // get the value of the input
        var mytext = $th.val();
            // set the value of the input
        $th.val(mytext.toUpperCase());
    });
    
        2
  •  1
  •   Sarfraz    14 年前

    使用 val() 而不是 text() :

    $("#TestText").bind('keyup', function (e) {
        $(this).val($(this).val().toUpperCase());
    });
    
        3
  •  0
  •   zz1433    14 年前

    我想应该这样做

    $("#TestText").bind('keyup', function (e) {
        $(this).val($(this).val().toUpperCase());
    });
    
        4
  •  0
  •   Ties    14 年前

    这应该起作用:

    $("#TestText").bind('keyup', function (e) {
      $("#TestText").val($(this).val().toUpperCase());
    });
    

    但我会使用css属性 text-transform

      #TestText {
        text-transform:uppercase;
      }