- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 jqTransform 来替换标准选择框和单选按钮的表单。一切都运行得很好,除了一件事让我烦恼:
由于它用链接列表替换了选择框,因此当您键入字母进行滚动时,它不会执行任何操作。例如,您单击打开选择,然后键入 S。它应该滚动到列表中的第一个 S,但没有任何反应。有没有办法重新启用此功能?以下是选择框的 jqTransform 代码。我没有看到此类事情的处理程序:
/***************************
Select
***************************/
$.fn.jqTransSelect = function(){
return this.each(function(index){
var $select = $(this);
if($select.hasClass('jqTransformHidden')) {return;}
if($select.attr('multiple')) {return;}
var oLabel = jqTransformGetLabel($select);
/* First thing we do is Wrap it */
var $wrapper = $select
.addClass('jqTransformHidden')
.wrap('<div class="jqTransformSelectWrapper"></div>')
.parent()
.css({zIndex: 10-index})
;
/* Now add the html for the select */
$wrapper.prepend('<div><span></span><a href="#" class="jqTransformSelectOpen"></a></div><ul></ul>');
var $ul = $('ul', $wrapper).css('width',$select.width()).hide();
/* Now we add the options */
$('option', this).each(function(i){
var oLi = $('<li><a href="#" index="'+ i +'">'+ $(this).html() +'</a></li>');
$ul.append(oLi);
});
/* Add click handler to the a */
$ul.find('a').click(function(){
$('a.selected', $wrapper).removeClass('selected');
$(this).addClass('selected');
/* Fire the onchange event */
if ($select[0].selectedIndex != $(this).attr('index') && $select[0].onchange) { $select[0].selectedIndex = $(this).attr('index'); $select[0].onchange(); }
$select[0].selectedIndex = $(this).attr('index');
$('span:eq(0)', $wrapper).html($(this).html());
$ul.hide();
return false;
});
/* Set the default */
$('a:eq('+ this.selectedIndex +')', $ul).click();
$('span:first', $wrapper).click(function(){$("a.jqTransformSelectOpen",$wrapper).trigger('click');});
oLabel && oLabel.click(function(){$("a.jqTransformSelectOpen",$wrapper).trigger('click');});
this.oLabel = oLabel;
/* Apply the click handler to the Open */
var oLinkOpen = $('a.jqTransformSelectOpen', $wrapper)
.click(function(){
//Check if box is already open to still allow toggle, but close all other selects
if( $ul.css('display') == 'none' ) {jqTransformHideSelect();}
if($select.attr('disabled')){return false;}
$ul.slideToggle('fast', function(){
var offSet = ($('a.selected', $ul).offset().top - $ul.offset().top);
$ul.animate({scrollTop: offSet});
});
return false;
})
;
// Set the new width
var iSelectWidth = $select.outerWidth();
var oSpan = $('span:first',$wrapper);
var newWidth = (iSelectWidth > oSpan.innerWidth())?iSelectWidth+oLinkOpen.outerWidth():$wrapper.width();
$wrapper.css('width',newWidth);
$ul.css('width',newWidth-2);
oSpan.css({width:iSelectWidth});
$ul.css({height:'420px','overflow':'hidden'});
// Calculate the height if necessary, less elements that the default height
//show the ul to calculate the block, if ul is not displayed li height value is 0
$ul.css({display:'block',visibility:'hidden'});
var iSelectHeight = ($('li',$ul).length)*($('li:first',$ul).height());//+1 else bug ff
(iSelectHeight < $ul.height()) && $ul.css({height:iSelectHeight,'overflow':'hidden'});//hidden else bug with ff
$ul.css({display:'none',visibility:'visible'});
});
};
以下是我们为实现此目的所做的尝试:
var oLinkOpen = $('a.jqTransformSelectOpen', $wrapper)
.keypress(function (e) {
$.each(myArray, function (i, l) {
var sc = l.substr(0, 1).toLowerCase();
var kc = String.fromCharCode(e.which);
if (sc == kc) {
$select[0].selectedIndex = i;
$('span:eq(0)', $wrapper).html(l);
$ul.hide();
return false;
}
});
});
最佳答案
哦,该死。如果没有代码,我就错过了大局。现在我明白发生了什么......是的,没有“恢复”功能,因为新的链接列表实际上不再是选择框。如果 jqTransform 默认情况下不包含可滚动选项,我认为您必须实现一个。
如果你看他们的演示页面,他们的“普通”选择框按预期工作(尽管很难注意到,因为所有选项都以“O”开头,它会跳转到第一个“选项”)和他们的样式选择框没有。
如果不深入研究代码,我怀疑这意味着插件本身没有实现按键捕获。
恐怕这不是您可能希望的“答案”。如果幸运的话,以前做过此类事情的人会听到你的请求。 ;-)
关于javascript - jqTransform Select - 滚动到键入的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8508563/
我正在使用 JQTransform 来设置所有表单元素的样式。是否可以禁用特定元素上的样式,而让所有其他元素由 JQTransform 设置样式? 最佳答案 我添加了 if( $input.hasCl
我正在使用 jqtransform jquery 插件来更改表单元素的外观和感觉。但是,我无法覆盖文本输入元素的宽度 - 无论我如何设置元素的样式,它都会被覆盖。有没有已知的方法可以覆盖此属性? 提前
尝试将 jqtransform 集成到 ASP.NET 站点中。我已经完成了三个教程,但仍然一无所获。我们正在使用 jQuery 1.4.1。这是我们目前所在的位置。有什么想法吗? 带有表单的页面:
我在表单上应用了 jquery 插件“jqTransform”(plugin URL)。现在我的要求是当用户选择任何下拉项时,应更改所选元素的颜色。这是表格的 URL www.clickmeal.im
我正在动态更改选择列表的选项。我正在使用 jqTransform 插件。它不会自动更新,我没想到会这样,但我可以找到更新显示的方法。我什至找不到完全删除它的方法。 我想要的是找到一种方法,例如 for
我目前正在我的一个项目中使用 Knockout JS我遇到的问题与表单元素有关。基本上输入的(文本、复选框、单选框等)是由knockout.js 操作的也应该是“使用”jqTransform。 我尝试
这个问题是由另一个用户提出的,但没有得到答案......所以我重新发布。我正在使用 jqTransform 插件,但希望它跳过我想通过 CSS 隐藏的 2 个文本输入并用作非侵入式垃圾邮件检查。隐藏起
jQTransform 和 jQery 1.4.2 有一个非常奇怪的问题。 当我在任何表单上使用 jQTransform 插件时,我的复选框将停止正常工作。 这是行为: 第一次点击复选框,将其标记 从
我有一个使用 jqTransform 来替换标准选择框和单选按钮的表单。一切都运行得很好,除了一件事让我烦恼: 由于它用链接列表替换了选择框,因此当您键入字母进行滚动时,它不会执行任何操作。例如,您单
抱歉,如果这很麻烦,但我真的需要一些帮助: http://dev.rjlacount.com/treinaAronson-form/ 点击左上角的“联系方式”按钮可以看到联系方式。我正在使用 jqTr
我正在使用 jqTransform 插件在页面的表单项中添加一些样式。选项卡中放置了三个表单,第二个和第三个选项卡中的选择框无法正常工作。 由于某种原因,脚本似乎将“height:0”应用于这些选择框
我使用 jqTransform,您可以通过查看我最近的问题看出,这让我很难过。 我在网络上看到了一些替代方案,但我想知道是否有真正值得的东西?有时我分不清我发现的脚本(或技术)是两个月前还是两年前。
我似乎完全无法更改 jQtransform 下拉菜单的字体大小。我正在使用默认的 h5bp css 文件,尽管那个 dosn`t 似乎不会引起问题(我非常怀疑)。我的表格看起来像这样
我们使用 jQuery jqtransform 插件来设计我们网站的表单。虽然有一种形式我们不希望它改变。我将在所有表单上运行 jqtransform 的脚本修改为以下内容: $('form:not
如何设置在选择元素上使用 jqtransform 时选择的选项。 我正在为我的表单使用 jqtransform,我想设置适当的选项值,以便在我从数据库中检索保存的数据时选择。 最佳答案 我相信您会以与
我正在使用名为:jqtransform 的 jQuery 插件 此插件使用 JavaScript 将 CSS 样式应用于表单元素。 我遇到的问题存在于以下场景中: 我正在构建一个带有高级搜索选项的搜索
我在表单中使用 jqTransform,并且我想禁用选择。 jqTransform 导致它没有被禁用。 如果您有解决方案,请指导我。 最佳答案 试试这个: // To disable $('.some
我正在使用一个名为 jQtransform (http://www.dfc-e.com/metiers/multimedia/opensource/jqtransform/) 的 jQuery 插件,
我正在使用 Jqtransform 脚本设计表单样式。该表单包括一个选择器,其中包含一些城市,当我单击一个时,它应该使用该城市内的某些位置更新其下方的选择器。 这里是选择器的代码 它在默认样式下工作
我正在使用 jqTransform 插件来设置我的表单元素的样式,这导致我的选择框出现了一个小问题。看起来选择框被隐藏并替换为包含列表等的自定义 DIV。 当从列表中选择某些内容时,我已经设法让插件触
我是一名优秀的程序员,十分优秀!