Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JQuery日期选择器保存到Bean中的多个字段(d/m/y)_Javascript_Jquery_Html_Datepicker - Fatal编程技术网

Javascript 将JQuery日期选择器保存到Bean中的多个字段(d/m/y)

Javascript 将JQuery日期选择器保存到Bean中的多个字段(d/m/y),javascript,jquery,html,datepicker,Javascript,Jquery,Html,Datepicker,一般来说,对于Javascript/JQuery/HTML,我是一个超级初学者,如果我的问题让人困惑,我深表歉意。我正在尝试更新遗留代码前端,以使用JQuery日期选择器,而不是旧的下拉菜单。后端代码(我不应该更改)使用一个字符串变量表示日期、月份和年份。我试图使用以下js将datepicker中的值直接保存到bean中: <script> $(function() { $(".datepicker").datepicker({ dat

一般来说,对于Javascript/JQuery/HTML,我是一个超级初学者,如果我的问题让人困惑,我深表歉意。我正在尝试更新遗留代码前端,以使用JQuery日期选择器,而不是旧的下拉菜单。后端代码(我不应该更改)使用一个字符串变量表示日期、月份和年份。我试图使用以下js将datepicker中的值直接保存到bean中:

<script>
    $(function() {
        $(".datepicker").datepicker({
            dateFormat: "yy-mm-dd",
            changeYear: true,
            changeMonth: true,
            onSelect: function(dateText, inst) { 
                var date = $(this).datepicker('getDate');
                document.getElementById('enterAppForm:effectiveDay').value  = date.getDate();  
                document.getElementById('enterAppForm:effectiveMonth').value = date.getMonth() + 1;              
                document.getElementById('enterAppForm:effectiveYear').value =  date.getFullYear();
            }
        });
    });
</script>
这些值确实显示正确。然而,bean显示它正在接收所有3个变量的
null
值。我肯定有一些基本的东西我不明白,所以如果有人能给我指出正确的方向,我会非常感激。我见过PrimeFaces的例子,但这个项目没有使用它


另外,在我解决问题后,这一步可能很简单,但是验证js需要抓取
var veEffectiveMonth=document.getElementById('enterAppForm:effectiveMonth')以使其工作。没关系,这是一个隐藏的领域,对吧?它以前曾链接到旧的下拉菜单。

如果我理解正确,您正在使用此代码:

document.getElementById('enterAppForm:effectiveDay').value  = date.getDate();  
document.getElementById('enterAppForm:effectiveMonth').value = date.getMonth() + 1;              
document.getElementById('enterAppForm:effectiveYear').value =  date.getFullYear();
要设置这些HTML元素的值,请执行以下操作:

<h:inputHidden id="effectiveDay" value="#{beanName.effectiveDay}" />
<h:inputHidden id="effectiveMonth" value="#{beanName.effectiveMonth}" />
<h:inputHidden id="effectiveYear" value="#{beanName.effectiveYear}" />

如果您查看datpicker api,您可以看到它有一个inst参数。它包含您选择的日期

var date = $(this).datepicker('getDate');

没用。在这里,您可以看到一个使用HTML/JQuery的示例。应该没什么不同

谢谢,这似乎是我错过的。但是,当我尝试使用此方法时,当我更改日期时,字段仍然不会填充。有哪些常见的原因?当我运行代码时没有任何错误,所以我不知道从哪里开始查找。我不知道原因是什么,但我认为您应该遵循@Amir建议,使用JQuery语法选择您的元素。您可以尝试使用console.log()函数调试代码。
<h:inputHidden id="effectiveDay" value="#{beanName.effectiveDay}" />
<h:inputHidden id="effectiveMonth" value="#{beanName.effectiveMonth}" />
<h:inputHidden id="effectiveYear" value="#{beanName.effectiveYear}" />
$("#effectiveDay").val(data.getDate());
$("#effectiveMonth").val(date.getMonth() + 1);
$("#effectiveYear").val(data.getFullYear());
var date = $(this).datepicker('getDate');