Javascript 使用JQuery设置HTML属性
我使用JQuery、Modernizer和Angular的组合来实现通过ng repeat生成的表的自定义日期选择器解决方案。如果我将“datepicker”的Angular指令硬编码到HTML中,这个解决方案就会起作用 因此,例如,在我的表格中,使用Javascript 使用JQuery设置HTML属性,javascript,jquery,html,Javascript,Jquery,Html,我使用JQuery、Modernizer和Angular的组合来实现通过ng repeat生成的表的自定义日期选择器解决方案。如果我将“datepicker”的Angular指令硬编码到HTML中,这个解决方案就会起作用 因此,例如,在我的表格中,使用ng repeat“revenue in runway.revenues”这样做: <td> <input type="date" class="form-control" ng-model="revenue.dat
ng repeat“revenue in runway.revenues”
这样做:
<td>
<input type="date" class="form-control" ng-model="revenue.date" placeholder="YYYY-MM-DD" datepicker required/>
</td>
然而,当我登陆Firefox页面时,它似乎不起作用
此外,如果我尝试通过执行类似于console.log($('input[type=“date”]”).prop(“class”)
的操作进行调试,则返回的值将是未定义的
(应该是表单控件
)
任何提示都将不胜感激 使用.attr()
或.setAttribute()
将属性设置为HTML
document.querySelector(“输入”).setAttribute(“日期选择器”,true);
console.log(document.querySelector(“输入”).outerHTML)代码>
我从user@guest271314获得了一个想法,并对其进行了一点扩展,从而实现了这一点
我没有将属性添加到基于Modernizr的HTML中,而是将$scope变量设置为布尔值
$(function() {
var nativeDateInputIsSupported = Modernizr.inputtypes.date;
if (!nativeDateInputIsSupported) {
$scope.datePickerValue = "true"
}
});
在我的指令中,我添加了以下内容:
function link(scope, element, attrs, controller) {
var requiredParam = attrs.datepicker === 'true'; //This was what was added
if (requiredParam) { //Checking for boolean value
element.datepicker({
dateFormat: "yy-mm-dd",
maxDate: '0'
});
}
}
这意味着在我的HTML中,我在日期输入中添加了datepicker=“{{datePickerValue}}”
,现在可以工作了!!感谢您的帮助,如果没有您的输入=),我就不会回到这个问题上来。我不确定主要问题是什么,因为我在angular&Modernizer方面经验最少,但最后一个问题应该是:console.log($('input[type=“date”]).attr(“class”)
或console.log($('input[type=“date”]).prop(“className”))
使用.attr()
将属性设置为HTML@TaufikNurRahmanda,我也试过了,但都不起作用(仍然返回未定义)。对于客座朋友来说,这是行不通的。我已经完成了.attr(“datepicker”),它什么也不做。另外,据其他一些堆栈溢出用户称,截至9月,JQuery似乎无法解决此问题。@AlexGelinas我怀疑问题是由于库之间的冲突(JQuery+angular+modernizr),是否存在任何控制台错误消息?如果没有,请尝试console.log($('input[type=“date”]').length)
(它将获取DOM中存在的匹配元素数,如果超过1,.attr()
或.prop()
将不起作用),如果结果为1,则尝试console.log($('input[type=“date”]).prop('outerHTML'))
(可能确实没有类属性)Hm,如果我尝试console.log($('input[type=“date”]”).length)
,返回的结果是0。如果我将其包含在$(文档)中,则会发生这种情况。就绪(…
)这似乎对我不起作用。请记住,此表上有7种不同的输入(我只是为了简洁起见才包括日期),因此我使用'input[type=“date”]
。此外,它不应该是datepicker=“true”
在HTML中,它应该是datepicker
(就像在顶部的HTML示例中,或者如果要使用required
作为输入)。这就是为什么我使用prop('datepicker',true)
@AlexGelinas你能描述一下“似乎不起作用”吗?一个或多个
元素是否应出现相同的结果,其中使用了正确的选择器。为什么HTML中只有datepicker
属性没有值才是预期结果?“似乎不起作用”如中所述,没有任何效果。datepicker
属性是我在Angular中创建的一个指令,如初始问题=)中所述,我给出了一个示例,说明了如何处理HTML代码的顶部块。我想知道这是否可能与我所指的HTML部分在技术上不存在于DOM中这一事实有关。它是用来生成带有ng repeat的表的。但是如果我在$(document).ready(…
之后尝试执行相同的操作,它仍然无效。“它应该是datepicker”,您在哪个浏览器中尝试设置datepicker
属性而不设置值,HTML呈现
,而不是
?
function link(scope, element, attrs, controller) {
var requiredParam = attrs.datepicker === 'true'; //This was what was added
if (requiredParam) { //Checking for boolean value
element.datepicker({
dateFormat: "yy-mm-dd",
maxDate: '0'
});
}
}