代码之家  ›  专栏  ›  技术社区  ›  JP.

jqtransform-设置文本框宽度

  •  1
  • JP.  · 技术社区  · 14 年前

    我正在使用jqtransform jquery插件来更改表单元素的外观。但是,我无法覆盖文本输入元素的宽度-无论如何设置元素的样式,它都会被覆盖。是否有已知的方法覆盖此属性?

    提前谢谢你,

    日元

    3 回复  |  直到 14 年前
        1
  •  3
  •   Darmen Amanbay Cherma Ramalho    14 年前

    原因似乎是:

    1. 每个表单元素都有自己的包装 div
    2. 这个 width 是由js硬编码的 style 属性,因此在CSS中重写此属性不起作用
    3. jqtransform不提供元素id,因此您必须以某种方式手动设置它,或者使用类进行操作

    所以,在您的情况下,我建议您使用jquery:

    var myW = 300;
    $("#elementId").css("width", myW);
    $("#elementId").parents(".jqTransformInputWrapper").css("width", myW);
    
        2
  •  5
  •   geoffreys    13 年前

    很抱歉重新提出一个旧问题,但现在的答案使它比必要的更复杂。

    最简单的方法是在输入元素上简单地设置“size”HTML属性:

    <%: Html.TextBoxFor(x=>x.SomeProperty, new{ size="4" })
    

    然后在运行时jqTransform计算div宽度(从jqTransform源文件提取):

    var inputSize=$input.width();
    if($input.attr('size')){
           inputSize = $input.attr('size')*10;
           $input.css('width',inputSize);
     }
    
        3
  •  0
  •   j0k gauthamp    12 年前

    我有一个简单的解决方案,你必须在jqtransform用法声明之前“配置”文本输入的size属性,protektor的引用是对的,是jquery给出的size属性的20,它检测文本输入的默认大小并乘以10。所以基本上,如果你想这样做,你可以给出一个标准尺寸:

    $("form input:text").attr("size", x);
    $("form").jqTransform();
    

    其中“x”是大小,它是一个数字,不是像素度量,记住jquery计算像素乘以10。如果你想在输入文本上显示400px,那么你必须将大小设置为40,然后就完成了。