我正在尝试使用textarea表单条目,我有一些javascript代码来计算和限制字符数,其max_length和size是动态的(即这些属性在模型创建后可以改变).
为了在django form textarea小部件中包含此功能,我想我必须创建一个自定义小部件,虽然我不确定如何真正地绑定模板中的javascript代码.为了更改textarea大小,我想我会从视图中将变量传递给表单创建,以生成textarea小部件实例.
否则,现在我只是在html/js中创建模板中的输入,然后将POST数据提交到django视图,并使用getitem检索它,然后将数据直接保存到我的模型中.当然哪个工作,但不是非常django'y,如果没有内置的django验证和干净的数据功能,也许在某种程度上是脆弱的.
所以我猜两个问题: (a) 如果我创建一个自定义django表单小部件,如何将我的javascript函数应用于模板中的textarea字段(包括"onkeypress = jstextcounter ...")和(b)如果我继续只是在没有django表单的情况下检索视图中的帖子数据,是否存在漏洞,我该怎么做才能确保数据得到充分验证?(页面已经要求用户登录,而不是公共评论框)
或者也许某人之前已经创建了这样一个自定义表单窗口小部件并知道某个好的代码片段?
干杯...
编辑 所以感谢MovieYoda的帮助,我得到了这个工作,并阅读了django中的动态表格.使用%d替换,我可以动态更改js函数的maxChars属性.
在forms.py我有:
text=forms.CharField(max_length = 1000, widget=forms.widgets.Textarea())
def __init__(self, *args, **kwargs):
size = kwargs.pop('size')
maxChars = kwargs.pop('maxChars')
super(MyForm, self).__init__(*args, **kwargs)
self.fields['text'].widget.attrs['onkeypress'] = 'return textCounter(this, this.form.counter, %d);' % maxChars
self.fields['text'].widget.attrs['rows'] = size
self.fields['text'].widget.attrs['cols'] = '40'
Run Code Online (Sandbox Code Playgroud)
其中模板中的js函数'textCounter'使用maxChars变量来限制字符数.
<script type="text/javascript">
function textCounter( field, countfield, maxLimit) {
if ( field.value.length > maxLimit )
{
field.value = field.value.substring( 0, maxLimit );
return false;
}
else
{ …Run Code Online (Sandbox Code Playgroud) 想在我的小部件布局中使用"图像"按钮.我想要一个可点击的图像,因此点击图像将改变图像.不知道如何在WidgetProvider RemoteView中设置它.有谁知道如何做到这一点?具体来说,如何在Widget提供程序中的onReceive中更改图像?谢谢
谢谢
我决定编写一个自定义小部件,扩展并覆盖标准的自动完成小部件.
$ .widget工厂的官方文档提到了继承,但看起来不太可能覆盖原始的widget选项(即不仅仅是添加它们).
例如,我无法使用以下代码重新定义源选项(默认为null):
$.widget("ui.productSearch", $.ui.autocomplete, {
bla: 15,
source: function( request, response ) {
response($.ui.autocomplete
.filter(["a", "b", "c"],request.term));
},
minLength: 2
});
Run Code Online (Sandbox Code Playgroud)
我在JS Bin上试了上面的代码.如果检查生成的窗口小部件,您可以看到bla被添加到选项中,但source和minLength仍然反映了$ .ui.autocomplete中定义的默认值.source仍为null,因此会引发错误:this.source不是函数.
我究竟做错了什么?如果这是$ .widget的预期行为,那么覆盖选项的最佳方法是什么?
我尝试了以下代码:
final Container root = getRootAncestor(c);
TextArea resultBox = findResultBox(root);
Style style = resultBox.getUnselectedStyle();
style.setBgImage(null);
style.setBgColor(0x00ff00);
style.setFgColor(0xff0000);
resultBox.setUnselectedStyle(style);
resultBox.setSelectedStyle(style);
Run Code Online (Sandbox Code Playgroud)
什么有效只是字体/前景色,但背景颜色仍然存在(它仍然使用主题中的背景图像).我也尝试过:
style.setBackgroundType(Style.BACKGROUND_IMAGE_SCALED);
style.setBgImage(Image.createImage(1, 1, 0x00ff00));
Run Code Online (Sandbox Code Playgroud)
但这也行不通.
使用LWUIT 1.5.
通常,通过调用CController::widget()实例(CController通常$this在视图中)来使用窗口小部件.
但是,如果我正在编写一个静态方法,一个帮助器,那么我就无法访问一个实例CController.那么我该如何使用小部件呢?
让我们进一步说,这个辅助方法是eval()在CDataColumn's value属性的'ed表达式中调用的.这种糟糕的表达几乎没有任何背景.帮助者应该如何使用小部件?
根据要求,一个视图示例:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $model->search(),
'columns' => array(
array(
'name' => 'attrName',
'value' => '--USE WIDGET HERE--',
),
)
));
Run Code Online (Sandbox Code Playgroud) 我有一个wpf登录表单的登录按钮.我希望该用户有两个选项,第一个是让用户填写用户名和密码,然后使用鼠标按下登录按钮,第二个选项是用户可以从键盘按ENTER键.我怎样才能让它发挥作用?鼠标单击执行作业,但按ENTER键不起作用.
<Button Canvas.Left="157" Canvas.Top="292" Height="24" BorderThickness="0" BorderBrush="White" Content="Login" Name="btnLogin" Width="99" Click="btnLogin_Click" Keyboard.KeyDown="bttnLogin_Enter" />
Run Code Online (Sandbox Code Playgroud)
我的代码是:---
private void bttnLogin_Enter(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
try
{
/// My code here
}
catch()
{
}
}
}
Run Code Online (Sandbox Code Playgroud) 我刚开始使用Android主控件编程,所以我可以通过settextviewtext(),但是当我想从它那里得到的文本,我有没有理想的设置文本在家里小部件一个TextView从我的微件提供.不能像在activity中那样正常使用findViewById(),然后使用getText().有没有办法从widget提供程序中获取home widget中textview的文本?或者告诉我如何从其他活动中获得?
任何人都可以指出我在哪里可以找到有关制作列表框的信息,能够拖放项目进行重新安排?我发现了一些与Perl相关的内容,但我对这种语言一无所知,而且我对tkinter很新,所以这很让人困惑.我知道如何生成列表框,但我不知道如何通过拖放重新排序.
我知道Jelly Bean 4.2增加了创建锁屏小部件的能力,但我也注意到某些应用程序(例如Spotify)已经为我的4.1.2手机添加了锁屏播放/暂停/停止/等控制.我不能为我的生活弄清楚他们是如何做到的.如何在我的应用程序中执行此类操作?
谢谢!
这是siteController index.php.在这里,我想在同一页面上显示来自不同表的两个列表.但是它只显示两个div的一个表数据.当我在两个div小部件上只设置$ dataProvider时如果我设置$ dataProvider2在actionIndex()中创建它会得到错误找不到$ dataProvider2.
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute'=>'practiceCode',
'format' => 'raw',
'value'=>function ($model, $index, $widget) {
},
],
'firstName',
],
]); ?>
</div>
<div class="col-lg-6" style="border:solid 1px;">
<h2>Member</h2>
<?= GridView::widget([
'dataProvider2' => $dataProvider2,//Error $dataProvider2 not found
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute'=>'memberCode',
'format' => 'raw',
'value'=>function ($model, $index, $widget) {
},
],
'firstName',
]); ?>
</div>
Run Code Online (Sandbox Code Playgroud)
这是actionIndex()这里我写了两个dataProvider($ dataProvider,$ dataProvider2)但我无法在index.php小部件中设置此dataProvider
public function actionIndex()
{
$query = new \yii\db\Query;
$query->select('*') …Run Code Online (Sandbox Code Playgroud)