我使用jQuery QueryBuilder,我注意到,在更改左侧字段时,操作员会自动重置。我知道这是内置的行为,因为不同的字段可能支持不同的操作员。

问题描述 投票:0回答:0
QueryBuilder源代码

,在我的用例中,我想尽可能保留先前选择的操作员。

有一种方法可以覆盖这种行为并防止操作员不必要地重置?任何建议或解决方法都将不胜感激!
	

您可以通过添加一些JavaScript来解决此问题,这些JavaScript会在更改QueryBuilder中更改过滤器时聆听。这是这样做的方法: $('#builder').on('afterUpdateRuleFilter.queryBuilder', function(e, rule, previousFilter) { // Only try to preserve the operator if there was a previous filter if (previousFilter && rule.filter) { var previousOperator = rule.operator; // Get the list of valid operators for the new filter var newOperators = rule.queryBuilder.getOperators(rule.filter); // Check if the old operator is still good with the new filter var operatorFound = newOperators.find(function(op) { return op.type === previousOperator.type; }); if (operatorFound) { // If it's good, keep using the old operator rule.$el.find(QueryBuilder.selectors.rule_operator).val(previousOperator.type); rule.operator = previousOperator; } } });

此代码是在每次更改过滤器时检查是否可以继续使用相同的操作员(例如等于,而不是等于等)。如果操作员仍然可以与新过滤器一起使用,则不会更改它。

这种方式,每次更改过滤器时,操作员不会重置,从而使事情变得不那么烦人,更一致。

javascript jquery reactjs query-builder jquery-query-builder
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.