通过Javascript

时间:2018-01-18 21:32:24

标签: javascript jquery html django python-3.x

我是Javascript的新手,并试图找出如何在HTML表单中获取变量的值。我有以下代码工作,我提出警告来测试我的逻辑,而else语句正在工作,但我似乎无法弄清楚如果值设置为on,如何让Javascript提交我的表单。我知道我的价值正在被正确解释,因为我也用警报测试了它。它似乎并不想提交表单。我查看了SO,似乎Javascript提交语法可能已更改?这是我的Javascript函数:

document.getElementById('ifon').onclick = function(){
  var getval = Checkbox(this.form);
  if (getval == 'on') {
    document.getElementById("data").submit();
}  else {
    alert(getval);
  }
}

以下是我对相关表单的HTML:

<form id="data" name="form_name" action="{% url 'foo:bar' record.id %}">
  <input type='hidden' name='status' value="Delete">
</form>

我是Javascript的新手,所以也许我错过了一些东西。这是一个复选框,Javascript似乎知道根据我的测试值是什么。我似乎无法提交表单。感谢您的帮助。

为了简化问题和我对Javascript的理解,我已经玩了一下,并且可以确认我已经掌握了基础知识。这是我的表格......

<form id="data" name="form_name" action="{% url 'foo:bar' record.id %}" method="POST">
  <input type='hidden' name='status' value="Delete">
</form>

<script>
function submitform()
 {
    document.form_name.submit();
 }
 </script>

此代码似乎不起作用。也没有错误消息。

基本的Javascript原则正在发挥作用,就像我将脚本更改为简单的... ...

<script>
function submitform()
 {
   alert("hi!");
 }
 </script>

我实际上看到一个弹出窗口,嗨!这完全取决于具有下面概述的onclick的按钮。一切正常。

  <button type="button" onclick="submitform()" class="button9"><h3 class="txtalgn1">Link</h3></button></a>

我的安装中的Javascript基础知识似乎有效。我更新了我的观点,包括如下:

class BookUpdateView(LoginRequiredMixin,NeverCacheMixin,UpdateView):
    model = Book
template_name = 'book/book_update.html'
form_class = book_Update        

@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
    return super(BookUpdateView, self).dispatch(request, *args, **kwargs)

def form_valid(self, form):
    self.kwargs['status'] = form.cleaned_data['status']
    return super(BookUpdateView, self).form_valid(form)

但Javascript提交仍然无法正常工作,或者它是否根据状态执行删除...

2 个答案:

答案 0 :(得分:0)

以下是在javascript中执行所需操作的方法,基本上您将自定义类添加到模板中的检查控件(我认为您使用的是我在代码中看到的复选框控件),然后捕获它,询问是否已选中,然后提交到您已经建立的网址:

$('.mycheck').click(function(){
      if ($(this).is(':checked')){
          var frm = document.getElementById("data");
          frm.submit();
      }
});

答案 1 :(得分:0)

如果您使用的是django,则需要在django端正确编码的视图(和url)。请注意by default csrf protection is on,您需要在django视图中添加csrf_exempt装饰器,或使用this method从页面中检索csrf标记

如果您使用表单,您的视图应该如下所示:

<audio src="http://localhost:5000/test.wav" controls autoplay>
  <p>If your browser doesn't support the 'audio' element, it will display the content here between the opening and closing tags.</p>
</audio>

编辑:如果您正在运行开发服务器,您应该能够在启动它的终端中实时查看http调用的日志。这应该可以帮助您找到错误的位置。