Передать значение формы в глобальную переменную - PullRequest
0 голосов
/ 27 октября 2010

Попытка передать значение формы в глобальный var для использования в двух функциях, но получить эту ошибку document.PostReply is undefined, или javascript просто аварийно завершает работу, потому что getReplyId не определен внутри функций. Независимо от того, что я пробовал, я получаю одну или другую ошибку

Может кто-нибудь понять, почему значение формы "ReplyID" не передается в var .
Var помещается в начале скрипта перед любыми функциями.

форма

<CFFORM NAME="PostReply" ID="PostReply" METHOD="POST">   
<CFINPUT TYPE="hidden" NAME="ReplyID" ID="ReplyID" VALUE="#ReplyID#">  
</CFFORM>

что я пробовал

1 - var getReplyId = document.PostReply.ReplyID;  
2 - var getReplyId = document.PostReply.ReplyID.value;  
3 - var getReplyId = document.getElementById("ReplyID");  
4 - var getReplyId = document.PostReply.getElementById("ReplyID");    
5 - var getReplyId = document.getElementById("PostReply.ReplyID").value; `

Если я просто сделаю это var getReplyId = 1, скрипт отлично работает, но мне нужно значение ReplyID.

Хорошо, здесь все по большей части

<CFOUTPUT>  
<STYLE>  
targetPostReply#ReplyID#{visibility : visible}  
targetPostReplyResponse#ReplyID#{visibility : visible}  
</STYLE>  
</CFOUTPUT>

<cfajaxproxy cfc="CFC/PostReply" jsclassname="PostReplyCFC">

<SCRIPT SRC="js/PostReply.js" TYPE="text/javascript">
    var getReplyId = document.getElementById("ReplyID").value;   
    $(document).ready(  
        function () {  
        $("form#PostReply").submit(  
        function PostNewReply(ReplyID, ReplyComment){  
            var cfc = new PostReplyCFC();   
            cfc.setCallbackHandler(getNewReply)  
            cfc.setForm('PostReply')  
            cfc.PostNewReply('ReplyComment');  

            document.getElementById("targetPostReplyResponse"+getReplyId).style.display='block';  
            document.getElementById("targetMakeReply"+getReplyId);  
            $('#targetMakeReply'+getReplyId).slideToggle("slow");  
            $(this).toggleClass("targetMakeReply"+getReplyId);  
            return false;  
        }); // .submit()  
    });  
    function getNewReply(newReply)    
    {    
        $('#replyResponse'+getReplyId).html(newReply);  
        return false;  
    }   
</SCRIPT>


<CFOUTPUT>
    <DIV ID="targetMakeReply#ReplyID#">  
        <CFFORM NAME="PostReply" ID="PostReply" METHOD="POST">  
            <CFINPUT TYPE="hidden" NAME="ReplyID" ID="ReplyID" VALUE="#ReplyID#">  
            <textarea name="ReplyComment" rows="5" cols="95"></textarea>  
            <CFINPUT type="image" name="Submit" id="submitButton" value="Post Reply" src="images/PostReply.gif" onmouseover="src='images/PostReplyO.gif'" onmouseout="src='images/PostReply.gif'">  
        </CFFORM>  
    </DIV>  
</CFOUTPUT>


<CFOUTPUT>  
    <STYLE>##targetPostReplyResponse#ReplyID#{display : none}</STYLE>  
    <DIV ID="targetPostReplyResponse#ReplyID#">  
        <TABLE ALIGN="center" VALIGN="top" WIDTH="750" BGCOLOR="FFFFFF" CELLPADDING="0" CELLSPACING="0">  
            <TR>  
                <TD COLSPAN="2" CLASS="text12B"><IMG SRC="images/blank.gif" WIDTH="1" HEIGHT="5" ALT="" BORDER="0"><BR><SPAN ID="replyResponse#ReplyID#"></SPAN></TD>  
            </TR>  
        </TABLE>  
    </DIV>  
</CFOUTPUT>

Ответы [ 3 ]

0 голосов
/ 27 октября 2010

Ну, я не знаю, почему это работает, но я поместил getReplyId = document.getElementById("ReplyID").value; в функцию PostNewReply, и она все еще работает как глобальная переменная.Из всего, что я знаю, это не должно работать, но оно работает.

0 голосов
/ 27 октября 2010

Обернул все JS внутри нового вызова функции «SubmitReply» и передал ему идентификатор, нажав «SubmitReply» на кнопке «ВВОД ВВОДА» Идентификатор (ReplyID) затем был передан var getReplyId = (Id). Это сделало возможным использование getReplyId всеми JS, показанными выше. Теперь JS, cfajaxproxy и CFC могут использовать идентификатор, делающий форму динамической со своим собственным идентификатором.

0 голосов
/ 27 октября 2010

Чтобы сделать переменную глобальной, просто не указывайте var.

getReplyId = document.getElementById("ReplyID").value;

обратите внимание, что глобальные переменные часто являются неоптимальной практикой. Если возможно, рассмотрите возможность вызова одной функции другой и передайте переменную в качестве параметра.

...