0

在我的django应用程序中,我显示了一个页面,该页面有一个。buttonstarts and stops a clock页面有一个form用户可以在其中输入一些详细信息,如名称、描述等并提交。最初div包含此表单的内容隐藏display:none在 css 中。仅显示按钮,单击时钟开始运行。当用户再次按下相同的按钮时,时钟停止并且隐藏的表单可见。

我通过使用为按钮“开始”和“停止”提供状态值的 javascript 来做到这一点。如果用户单击它并相应地更改状态,我已经编写了一个函数。

var buttonStatusChange= function(){
    var buttonstatus = $('#clockbtn').attr("value");
    if (buttonstatus == "start"){
        $('#clockbtn').attr("value","stop");
        ...
        hideElement("userinputdiv");
    }else if (buttonstatus == "stop"){
        $('#clockbtn').attr("value","start");
        ...
        showElement("userinputdiv");
    }
};

var showElement=function(elementId){
    var elem_selector='#'+elementId;
    $(elem_selector).show();  
};
var hideElement=function(elementId){
    var elem_selector='#'+elementId;
    $(elem_selector).hide();
};

在我的 django 视图中,我正在验证帖子中的userinputform和其他forms。如果验证失败,则会显示原始表单(现在该字段旁边有错误)。

def my_view(request,...):
    if request.method=='POST' and otherform.is_valid():
        ...
        userinputform_is_valid = userinputform.is_valid()
        if not userinputform_is_valid:
            return custom_render(request,context,template_name)
        ...
        #otherwise get values from form,save etc..

def custom_render(request,context,template):
   req_context=RequestContext(request,context)
   return render_to_response(template,req_context)

页面的html

....
<div id="userinputdiv">
    ....
    <form ...>
     <p>
  <span id="myfield">Enter WholeNumber:</span>
  {{my_form.myfield}}{{my_form.myfield.errors}}
  </p>
   ...

不幸的是,由于 css 对 userinputdiv 有一个 display:none,该 div 是隐藏的,所以用户看不到错误。他现在看到的是一个只有一个按钮的页面,可以启动/停止时钟。如果我取页面,错误在那里<ul class="errorlist ...>

所以,我想知道如果在发布期间发生任何验证错误,如何使用户输入表单对用户可见。如果我制作 css userinputdiv display:block,页面中的错误将按预期显示 - 但显示所有输入字段,甚至在任何时钟之前运行..我不希望这种情况发生,因为我使用时钟的开始和结束时间作为隐藏字段,在帖子中发送并在我的 django 视图中处理

4

1 回答 1

0

在同样的情况下,我正在使用 Ajax,如果从服务器获取错误 - 动态添加此字段(我在占位符中写入)。使用 Ajax 变体,您可以使用 jquery 的 AjaxStart- AjaxStop 函数运行和停止 Clock。

于 2012-11-30T09:16:33.753 回答